我对使用"concurrent.futures"进行并行处理还比较新,并正在测试一些简单的实验。我编写的代码似乎可以工作,但是我不确定如何存储结果。我尝试创建一个列表("futures") 并将结果附加到其中,但这会显著减慢过程。我想知道是否有更好的方法。谢谢。
import concurrent.futures
import time
couple_ods= []
futures=[]
dtab={}
for i in range(100):
for j in range(100):
dtab[i,j]=i+j/2
couple_ods.append((i,j))
avg_speed=100
def task(i):
origin=i[0]
destination=i[1]
time.sleep(0.01)
distance=dtab[origin,destination]/avg_speed
return distance
start1=time.time()
def main():
with concurrent.futures.ThreadPoolExecutor() as executor:
for number in couple_ods:
future=executor.submit(task,number)
futures.append(future.result())
if __name__ == '__main__':
main()
end1=time.time()
as_completed
部分有一个小错误,应该是:for future in concurrent.futures.as_completed(futures): dostuff(future.result())
。 - slallum