【发布时间】:2020-10-01 03:41:07
【问题描述】:
我正在学习 Python 的多处理模块。我在 Python 3.8 上。这是我的示例代码:
# import stuff
def add(x, y):
time.sleep(10)
print(f'{x + y} \n')
def main():
start = time.perf_counter()
if __name__ == '__main__':
p1 = mp.Process(target=add, args=(100, 200))
p2 = mp.Process(target=add, args=(200, 300))
p1.start(); p2.start()
p1.join(); p2.join()
end = time.perf_counter()
print(f'{end - start} seconds \n')
main()
我期待如下输出:
300
500
10.something seconds
但是当我运行它时,我得到:
5.999999999062311e-07 seconds
5.00000000069889e-07 seconds
500
300
10.704853300000002 seconds
由于某种原因,end = time.perf_counter(); print(f'{end - start} seconds \n') 部分在每个进程启动后执行一次,在它们都结束后再执行一次。但是这里我特意写p1.join(); p2.join()告诉计算机等到这些进程完成后再继续下面的代码行。
为什么会这样?我能做些什么来解决它?
【问题讨论】:
-
你用的是什么平台?
-
@dano,我在 Windows 10 上
标签: python python-3.x parallel-processing process multiprocessing