Python 多处理调试

Python multiprocessing debug

我正在尝试掌握 Python 多处理的窍门,但到目前为止我的测试显示顺序 运行ning 而不是并行。

我试过这个简单的代码:

multiprocessing.py:

import multiprocessing
import os


def proc1():
    os.system('python proc1.py')

def proc2():
    os.system('python proc2.py')

if __name__ == "__main__":
    p1 = multiprocessing.Process(target=proc1())
    p2 = multiprocessing.Process(target=proc2())
    p1.start()
    p2.start()

proc1.py:

import time
for i in range(0,5):
    print('process 1: ', i)
    time.sleep(0.5)

proc2.py:

import time
for i in range(0,5):
    print('process 2: ', i)
    time.sleep(0.5)

我的理解是 应该 运行 在不同的 CPU 上并行,但是,控制台输出始终是这样的:

process 1:  0
process 1:  1
process 1:  2
process 1:  3
process 1:  4
process 2:  0
process 2:  1
process 2:  2
process 2:  3
process 2:  4

Process finished with exit code 0

我认为这两个过程的输出应该混合并以不同的顺序排列,这取决于哪个核心是 'faster'。这是Pycharm的限制吗?还是我做错了什么?

这是一个简单的语法错误。通过

p1 = multiprocessing.Process(target=proc1())

你是说目标应该是 proc1 的输出。 你要的是

p1 = multiprocessing.Process(target=proc1)

这样目标就是函数 proc1