Ale*_*der 7 python garbage-collection pandas
使用%prun在IPython中分析我的代码,我注意到大部分功能时间花在垃圾收集上(0.334s与0.428总时间).
79254 function calls (77408 primitive calls) in 0.428 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
5 0.334 0.067 0.334 0.067 {gc.collect}
15757 0.005 0.000 0.007 0.000 {isinstance}
1584 0.002 0.000 0.004 0.000 dtypes.py:68(is_dtype)
Run Code Online (Sandbox Code Playgroud)
我已经尝试在调用函数之前和返回它的值之后禁用/启用垃圾收集,但时间几乎完全相同.
import gc
gc.disable()
x = foo()
gc.disable()
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么这是一个瓶颈以及如何加快它?
我的Python/Pandas版本如下:
Python 2.7.11 |Continuum Analytics, Inc.| (default, Dec 6 2015, 18:57:58)
Pandas 0.17.1
Run Code Online (Sandbox Code Playgroud)
您已禁用gc
,因此实际上可能有某些东西gc.collect
显式调用。你可以在 IPython 中使用这个技巧来找到罪魁祸首:
import gc
import traceback
old_collect = gc.collect
def new_collect(*args, **kwargs):
traceback.print_stack()
old_collect(*args, **kwargs)
gc.collect = new_collect
Run Code Online (Sandbox Code Playgroud)
请注意,仅当代码起作用时它才起作用import gc
,它不起作用from gc import collect
(我们正在操作 gc 模块)。
如果您发现错误,请报告错误。
归档时间: |
|
查看次数: |
964 次 |
最近记录: |