提问人:Schwinja 提问时间:11/13/2023 最后编辑:Schwinja 更新时间:11/14/2023 访问量:36
Python 导入和 Pickle CPU 时间峰值
Python Import and Pickle CPU Time Peak
问:
我想获取我为基准测试开发的 python 模块的 CPU 时间。使用 pip install 安装后,我通过 CLI 调用它。 虽然挂钟时间很好,但我在启动应用程序(大约 7 秒)和加载泡菜文件(LightGBM 型号,7 个型号约为 23 秒)时观察到 CPU 时间出现峰值。所以总和约为 30 秒,而挂钟时间约为 1 秒。 以下是我所说的泡菜负载:
def get_model(name):
model = None
if name == "median":
with open(os.path.join(os.path.dirname(__file__), 'median_model.pkl'), 'rb') as model_file:
model = pickle.load(model_file)
elif name == "lower_5":
with open(os.path.join(os.path.dirname(__file__), 'low_model_5.pkl'), 'rb') as model_file:
model = pickle.load(model_file)
elif name == "lower_10":
...
启动 CPU 时间似乎是导入我的一个自定义模块的结果:
from mymodule.Prediction.predictor import Predictor
如果没有此导入,7 秒的 CPU 时差将消失。
一切都是按顺序进行的,没有多重处理。所以我想知道为什么这两个过程会产生如此大的 CPU 时间并使用多个线程/内核。
那么,为什么这两个操作使用多个线程呢?我怎样才能防止这种情况发生?
提前非常感谢!
我知道唯一可以正确处理它的方法是使用 分配一个修复核心,但我无法在生产中甚至在 Windows 上执行此操作。taskset -c 0
编辑:我在linux下使用“time”命令来获取CPU时间。我也尝试了“perf”,结果相同。 EDIT2:导入CPU时间实际上是由于:from scipy.stats import entropy。一旦我删除了这条线,7 秒的额外 CPU 时间就消失了......
答: 暂无答案
评论