如何对并行化的Python脚本进行性能分析?

12

假设我有一个名为my_parallel_script.py的Python脚本,其中使用multiprocessing来并行化多个任务,我使用以下命令运行它:

python -m cProfile my_parallel_script.py

这仅为父进程生成分析输出。在子进程中进行的调用根本不会被记录。是否也可以对子进程进行分析?

如果唯一的选择是修改源代码,那么最简单的方法是什么?

1个回答

10

cProfile仅在单个进程内工作,因此您不会自动获得子进程的分析。

我建议您调整子进程代码,以便可以将其单独调用为单个进程。然后在分析器下运行它。在分析过程中,您可能不需要在系统中运行多个进程,只有一个子进程运行会简化任务。


4
我已经尝试过这种方式,但不幸的是我需要在性能分析时运行多进程系统。它似乎在一段时间后明显变慢,但仅在启用了多进程时才会出现这种情况。 - Fragsworth
4
可能是资源争用的问题,使用分析工具可能无法找到问题。无论如何,您可以尝试同时对所有子进程进行分析。您可以在子Python代码中以编程方式调用分析工具。 - Ned Batchelder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接