Skip to main content
 首页 » 编程设计

Python 并行遍历列表

2025年05月04日30zhenyulu

我创建了一个列表,其中的项目不超过 8 个,现在我使用标准 for 循环“for item in list:”遍历该项目,我想知道是否有一种方法可以检查所有元素在同一时间?我看过一些关于使用 zip 同时迭代 2 个列表的帖子,这可能会有所帮助。

如果无法同时遍历列表元素,我想我需要将一个列表拆分为 4 个单独的列表,并使用 zip 同时迭代 2 个,并在单独的线程上执行其他 2 个,但这似乎是一个笨拙的修复。

如有任何帮助,我们将不胜感激。

编辑 抱歉含糊其词,我有一个列表

apples = ['green', 'green', 'green', 'red'] 

现在我使用 for 循环遍历每个元素,

for apple in apples: 
    checkAppleColour(apple) 
    #Do some more stuff depending on colour.... 

现在它一个一个地遍历 apple 中的每个元素,我希望能够在完全相同的时间检查每个项目以进行颜色检查,因为每一毫秒都很重要(使用的示例代码,但是原理与我要实现的目标完全相同)。

性能是这里的关键我不介意是否必须使用它的线程,但我需要最大速度/效率来检查每个元素,我猜想并行是实现它的方法,我只是不太确定如何.

请您参考如下方法:

如果您可以将一个函数映射到列表中,那么并行性就很容易了。

def addOne (x): 
    return x + 1 

默认 map 在一个线程上做事。

map(addOne, range(1, 4)) #When iterated over produces [2, 3, 4] 

如果您的问题是 map ,则意味着它是平凡的。

from multiprocessing import Pool 
 
pool = Pool() 
pool.map(addOne, range(1, 4)) ##When iterated over produces [2, 3, 4] 

这使用了多个进程。 multiprocessing.dummy.Pool 是一个线程池。参见 this article for a great introduction两者背后的基本原理。