使用 multiprocessing.Process 与 subprocess.Popen 的速度比较
Speed comparison using multiprocessing.Process versus subprocess.Popen
我正在使用Python3执行PYQT代码;同时,我需要调用 Python2.7 代码,用于无法通过 Python3.
执行的操作
我确实通过 Popen
实现了 2.7 代码执行;尽管从 Popen
调用时 运行 2.7 代码需要相当长的时间。如果我直接从 Python2.7.
运行 执行相同的操作,速度会快得多
是否可以使用 multiprocessing
而不是 subprocess.Popen
来达到同样的目的,以加快 2.7 代码的执行速度?
如果合适的话;从 multiprocessing.Process
调用 Python2.7 代码的正确方法是什么?或者使用多进程是一种浪费,因为我只执行一个操作?
multiprocessing
仅在无法 fork 处理的非 POSIX 系统上类似于 subprocess
,因此从理论上讲,您可以破解 multiprocessing
以使用不同的解释器。它会比它的价值更麻烦,因为那时你不会在产生 subprocess
和使用 multiprocessing.Process
之间获得任何性能提升(事实上,它可能会由于以下原因而结束得更慢添加到 multiprocessing.Process
) 的通信开销。
因此,如果我们只讨论必须在不同解释器中执行的单个任务,那么这将是您所能达到的最快速度。如果有多个任务要在不同的解释器中执行,您仍然可以从 multiprocessing.Process
中受益,方法是将单个子进程生成到 运行 不同的解释器,然后在其中使用 multiprocessing
来分发多个任务在你的核心之上。
我正在使用Python3执行PYQT代码;同时,我需要调用 Python2.7 代码,用于无法通过 Python3.
执行的操作我确实通过 Popen
实现了 2.7 代码执行;尽管从 Popen
调用时 运行 2.7 代码需要相当长的时间。如果我直接从 Python2.7.
是否可以使用 multiprocessing
而不是 subprocess.Popen
来达到同样的目的,以加快 2.7 代码的执行速度?
如果合适的话;从 multiprocessing.Process
调用 Python2.7 代码的正确方法是什么?或者使用多进程是一种浪费,因为我只执行一个操作?
multiprocessing
仅在无法 fork 处理的非 POSIX 系统上类似于 subprocess
,因此从理论上讲,您可以破解 multiprocessing
以使用不同的解释器。它会比它的价值更麻烦,因为那时你不会在产生 subprocess
和使用 multiprocessing.Process
之间获得任何性能提升(事实上,它可能会由于以下原因而结束得更慢添加到 multiprocessing.Process
) 的通信开销。
因此,如果我们只讨论必须在不同解释器中执行的单个任务,那么这将是您所能达到的最快速度。如果有多个任务要在不同的解释器中执行,您仍然可以从 multiprocessing.Process
中受益,方法是将单个子进程生成到 运行 不同的解释器,然后在其中使用 multiprocessing
来分发多个任务在你的核心之上。