Python 多处理调试

舞会

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

我试过这个简单的代码:

多处理.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

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

埃多阿索

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

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

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

p1 = multiprocessing.Process(target=proc1)

这样目标是函数proc1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章