我试图理解多处理在Python中是如何工作的。这是一个简单的代码,它没有像我预期的那样调用函数。
import time
import multiprocessing
def do_something():
print('Sleep')
time.sleep(1)
print('Wake up')
start = time.perf_counter()
p1 = multiprocessing.Process(target=do_something)
p2 = multiprocessing.Process(target=do_something)
p1.start()
p2.start()
p1.join()
p2.join()
finish = time.perf_counter()
print(f'Finished in {round(finish-start, 2)} second(s)')
在Jupyter Notebook中,执行后我得到以下输出:
Finished in 0.2 second(s)
我想它会像这样:
Sleep
Sleep
Wake up
Wake up
Finished in 0.2 second(s)
我错过了什么?
您应该查看"编程指南"(https://docs.python.org/3/library/multiprocessing.html#multiprocessing-programming(以找出为什么需要:
if __name__ == '__main__' :
保护使用多处理的脚本。由于您的笔记本中没有它,因此它将无法正常工作。