我正在使用Python3来执行PYQT代码;同时,我需要调用Python2.7代码,用于我无法通过Python3执行的操作。
我确实通过Popen
实现了2.7代码执行;虽然从Popen
调用时需要花费大量时间来运行2.7代码。如果我直接从Python2.7运行它,则执行相同的操作要快得多。
为了同样的目的,可以使用multiprocessing
而不是subprocess.Popen
,以加快2.7代码的执行速度吗?
如果这是合适的;从multiprocessing.Process
调用Python2.7代码的正确方法是什么?或者使用多进程是一种浪费,因为我只执行一个操作?
答案 0 :(得分:1)
multiprocessing
类似于subprocess
仅适用于无法进行fork处理的非POSIX系统,因此理论上您可以通过攻击multiprocessing
来使用不同的解释器。这会比它的价值更麻烦,因为在那时你不会在产生subprocess
和使用multiprocessing.Process
之间获得任何性能提升(事实上,它可能会变得更慢)由于通信开销添加到multiprocessing.Process
)。
所以,如果我们只谈论一个必须在不同的翻译中执行的单个任务,那么这就像你将要获得的那样快。如果要在不同的解释器中执行多个任务,您可能仍然可以通过生成单个子进程来运行不同的解释器,然后在其中使用multiprocessing.Process
来在您的核心上分配多个任务,从而使multiprocessing
受益。