
正文
python函数调用效率 python函数调用的过程
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
python的开发效率高吗
相对于其他语言来说,python因为有丰富的第三方函数库可以调用,因此,开发效率较高。
相关问答
Q1: pythonif还是max效率高
是if效率高。
因为max涉及对函数名称python函数调用效率的字典找python函数调用效率,然后是函数调用python函数调用效率,而直接使用运算符则不花那么多时间,所以if语句的速度比使用max函数快。
在使用ifelifelse条件语句时,有些细节需要初学者注意。1)代码块不要忘记缩进。2)if表达式不要遗忘冒号。
Q2: Python的各种imread函数在实现方式和读取速度上有何区别
1. PIL.Image.open
代码在这里python函数调用效率:Pillow/Image.py at 3.1.x · python-pillow/Pillow · GitHub
open() 函数打开图像,但并不读入,直到有操作发生。
具体python函数调用效率的读取操作是在 ImageFile.py 写的。大体流程是先检测文件类型,整块地读入文件内容,然后调用解码器解码,做了很多优化,效率应该还是很高的。
2. scipy.ndimage.imread
代码在这里:scipy/io.py at v0.17.1 · scipy/scipy · GitHub
imread 调用 scipy.misc.pilutil.imread。从名字就能看出来其实调用的还是 Pillow。
根据 pilutil 代码:scipy/pilutil.py at v0.17.1 · scipy/scipy · GitHub
确实是调用 pil.image.open(),然后返回一个 fromimage()。
3. scipy.misc.imread
misc 的 __init__.py 在这里:scipy/__init__.py at v0.17.1 · scipy/scipy · GitHub
调用的还是 pilutil 中的 imread
相关代码如下
try:
from .pilutil import *
from . import pilutil
__all__ += pilutil.__all__
del pilutil
except ImportError:
pass
也算是学了一招,从 pilutil 导入其所有函数添加到当前空间,然后又删除了 pilutil 消除影响。
4. skimage.io.imread
代码在这里:scikit-image/_io.py at master · scikit-image/scikit-image · GitHub
是通过插件 plugin 来读入不同的文件,而且会试用几个不同的 plugins 来找到合适的。
使用 call_plugin 来调用,代码在这里:scikit-image/manage_plugins.py at master · scikit-image/scikit-image · GitHub
可以根据如下代码查看插件调用的优先级
# For each plugin type, default to the first available plugin as defined by
# the following preferences.
preferred_plugins = {
# Default plugins for all types (overridden by specific types below).
'all': ['pil', 'matplotlib', 'qt', 'freeimage'],
'imshow': ['matplotlib'],
'imshow_collection': ['matplotlib']
}
plugins 的源代码在这里:scikit-image/skimage/io/_plugins at master · scikit-image/scikit-image · GitHub。可以看到 pil 的 imread,是用 open 打开图像之后,再转换成 ndarray。
5. cv2.imread
这里是调用的 CV::imread(),代码在这里:opencv/loadsave.cpp at master · opencv/opencv · GitHub。一般来说 C\C++ 的实现,应该比 python 速度快一点。
6. matplotlib.image.imread
matplotlib 的文档里面说,matplotlib 原生只可以读取 PNG 文件,有 PIL 的时候,可以读取其他类型的文件。如果使用 URL 打开在线图像文件,需要符合 PIL 的文档要求。
matplotlib.image.imread 的代码在这里:matplotlib/image.py at master · matplotlib/matplotlib · GitHub。matplotlib 的原生 PNG 读取和写入,是用 C 实现的,代码在这里:matplotlib/_png.cpp at master · matplotlib/matplotlib · GitHub。
matplotlib 是先用 pil 的 open 打开图像,如果格式是 png,就用原生方法打开。相关代码如下:
handlers = {'png': _png.read_png, }
if format is None:
if cbook.is_string_like(fname):
parsed = urlparse(fname)
# If the string is a URL, assume png
if len(parsed.scheme) 1:
ext = 'png'
else:
basename, ext = os.path.splitext(fname)
ext = ext.lower()[1:]
elif hasattr(fname, 'name'):
basename, ext = os.path.splitext(fname.name)
ext = ext.lower()[1:]
else:
ext = 'png'
else:
ext = format
if ext not in handlers:
im = pilread(fname)
if im is None:
raise ValueError('Only know how to handle extensions: %s; '
'with Pillow installed matplotlib can handle '
'more images' % list(six.iterkeys(handlers)))
return im
声明的处理器只有 png。如果是 png 文件,调用 _png.read_png。如果不是 png 直接使用 pilread(就是用 pil 的 Image.open 然后 pil_to_array)。
matplotlib 的源码确实比较复杂,一大部分主体是用 C 写的,改动很激进,功能更新猛烈。
Q3: Python怎么设置条件表达式会提高效率
1.把range全部换成xrange
2.生成器,如 list=(item for item in fp)
3.利用psyco库,提高函数和类的运行效率。
4.字符串拼接:尽量少用“+”的方式,而采用''.join ,还有"%s"%i这样赋值的手段
5.函数的开销很大。尽量把循环放在函数内进行。而不要让每次迭代都调用函数。
6.“前提工作”先做好,比如该赋值,该拼接的,然后再引入到函数中,或者进行下面的循环。
7.尽量使用内置方法,因为内置的是C写的,效率肯定高很多
8.每当要对序列中的内容进行循环处理时,就应当尝试用列表解析来代替它,如:[i for i in xrang(10) if i%2==0]
9.学会使用itertools模块。当python中添加了迭代器后,就为常见模式提供了一个新的模块,因为它是以C语言编写,所以提供了最高效的迭代器。
--多记录一些。列表,字符串,字典,xrange,类文件对象,这些都是可迭代对象,换句话说,都可以直接用在for循环中进行迭代,如for item in open('1.txt')
--直接使用速度会快。另外,我对比了itertools里工具和xrange,比如都循环100000次打印数字,使用islice(count(),100000)均要比xrange(100000)快
--而xrange还要比range快。
10.用列表解析取代for循环。列表解析的效率等于或高于map。
11.垃圾回收机制,会对列表的操作有重大影响,如列表的append,或者列表解析。import gc,然后在数据载入模块前gc.disable(),结束后再gc.enable()。
Q4: 学习了python函数调用后的感受
函数调用很方便,提高了程序的可读性,而且还可以重复使用,提高了编程的效率
python函数调用效率的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python函数调用的过程、python函数调用效率的信息别忘了在本站进行查找喔。





