首页 > 解决方案 > Python gc.collect 在 django api 调用中几乎花费了所有时间

问题描述

我有一个 api,它使用 pandas 处理一些数据,然后发回结果,但是经过仔细检查,我发现 Api 大约需要 1.5 分钟。我正在使用 import_module 加载一个模块,该模块随后出现此 gc.collect 问题。

动态加载模块的代码

cprofile 输出

标签: pythondjangopandasoptimizationgarbage-collection

解决方案


所以我找到了解决方案:

似乎熊猫在代码内部使用了强制垃圾收集,这导致了太多 gc.collect 调用。

所以我搜索禁用它并发现了这个问题

https://github.com/pandas-dev/pandas/issues/11045

要解决此问题,请添加以下行以禁用此行为

pd.set_option('mode.chained_assignment', None)

推荐阅读