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
我正在尝试掌握 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