在项目列表上使用线程



我有一个我想用线程处理的项目列表,每个项目大约需要 10 分钟,我想一次做几个。

现在我一次做一个,这需要一段时间。

old = ["old_item1","old_item2","old_item3","old_item4","old_item5"]
new = ["new_item1","new_item2","new_item3","new_item4","new_item5"]
area = ["area_item1","area_item2","area_item3","area_item4","area_item5"]
def func(x,y,z):
print (x,y,z)
d = zip(old,new, area)
for e,f, g in d: 
thread1 = threading.Thread(target=func, args=(e,f,g))
thread2 = threading.Thread(target=func, args=(e,f,g))
thread1.start()
thread2.start()
thread1.join()
thread2.join()

所以我要做的是处理

带线程 1 的项目 1 带有线程 2 的项目 2

带线程 1 的项目 3 项目4 与线程 2

最后 带线程 1 的项目 5

您可以使用multiprocessing的游泳池,它将为您处理所有凌乱的工作。使用starmap函数,您可以在可迭代对象的所有项上运行函数作为其参数。

像这样:

from multiprocessing import Pool
old = ["old_item1","old_item2","old_item3","old_item4","old_item5"]
new = ["new_item1","new_item2","new_item3","new_item4","new_item5"]
area = ["area_item1","area_item2","area_item3","area_item4","area_item5"]
def func(x,y,z):
print (x,y,z)
d = zip(old,new, area)
with Pool() as pool:
res = pool.starmap(func, d)
保存结果实际上
  • 在这里不是必需的,但通常返回值将是与给定可迭代对象对应的所有结果的列表。

相关内容

  • 没有找到相关文章

最新更新