使用multiprocessing.Process与subprocess.Popen进行速度比较

时间:2017-12-07 06:57:13

标签: python performance subprocess python-multiprocessing

我正在使用Python3来执行PYQT代码;同时,我需要调用Python2.7代码,用于我无法通过Python3执行的操作。

我确实通过Popen实现了2.7代码执行;虽然从Popen调用时需要花费大量时间来运行2.7代码。如果我直接从Python2.7运行它,则执行相同的操作要快得多。

为了同样的目的,可以使用multiprocessing而不是subprocess.Popen,以加快2.7代码的执行速度吗? 如果这是合适的;从multiprocessing.Process调用Python2.7代码的正确方法是什么?或者使用多进程是一种浪费,因为我只执行一个操作?

1 个答案:

答案 0 :(得分:1)

multiprocessing类似于subprocess仅适用于无法进行fork处理的非POSIX系统,因此理论上您可以通过攻击multiprocessing来使用不同的解释器。这会比它的价值更麻烦,因为在那时你不会在产生subprocess和使用multiprocessing.Process之间获得任何性能提升(事实上,它可能会变得更慢)由于通信开销添加到multiprocessing.Process)。

所以,如果我们只谈论一个必须在不同的翻译中执行的单个任务,那么这就像你将要获得的那样快。如果要在不同的解释器中执行多个任务,您可能仍然可以通过生成单个子进程来运行不同的解释器,然后在其中使用multiprocessing.Process来在您的核心上分配多个任务,从而使multiprocessing受益。