我正在尝试掌握 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] 删除。
我来说两句