【发布时间】:2017-06-02 06:31:13
【问题描述】:
我一直在调试这个非常简单的代码,它调用两个函数,每个函数在完成前等待 1 秒。我知道 apply_async 应该从一组工作人员中并行运行作业。因此,如果有 10 个工作人员和 20 个等待命令提交,则程序应该总共运行 2 秒,因为 1 秒等待命令中有 10 个应该在 10 个进程中并行运行。我的带有 20 个等待命令的代码持续运行大约 20 秒,这表明我尝试并行化我的代码不起作用。无论我的游泳池中有多少工人,它都会运行 20 秒有没有人对我可能做错了什么有建议?谢谢!
from multiprocessing import Pool
def doubler(number):
time.sleep(1)
def double_trouble(number):
time.sleep(1)
if __name__ == '__main__':
start_time = time.time()
pool = Pool(processes=10)
for i in range(10):
pool.apply_async(double_trouble(i))
pool.apply_async(doubler(i))
pool.close()
pool.join()
print ("We took second: ", time.time()-start_time)
【问题讨论】:
-
这确实应该被设计为引发错误。
标签: python multithreading