如何分析并行化的Python脚本?

Fra*_*rth 10 python parallel-processing profile multiprocessing

假设我有一个调用的python脚本my_parallel_script.py涉及使用multiprocessing并行化几个东西,我使用以下命令运行它:

python -m cProfile my_parallel_script.py
Run Code Online (Sandbox Code Playgroud)

这仅为父进程生成分析输出.根本不记录在子进程中进行的呼叫.是否也可以分析子进程?

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

Ned*_*der 9

cProfile仅适用于单个进程,因此您不会自动获取子进程的概要.

我建议您调整子进程代码,以便可以作为单个进程单独调用它.然后在分析器下运行它.您可能不需要在分析时运行系统多进程,并且它将简化作业以仅运行一个子进程.

  • 我已经尝试过了,不幸的是我**需要在分析时运行系统多进程.它似乎在一段时间后显着减慢,但只有在启用多处理的情况下才会运行. (3认同)
  • 可能那时它是资源争用,并且分析可能不是找到它的方式.无论如何,您可以尝试一次性分析所有子进程.您可以在子Python代码中以编程方式调用配置文件. (3认同)