Python并行迭代列表?

时间:2016-02-10 15:19:41

标签: python parallel-processing iteration

我创建了一个列表,其中不超过8个项目,现在我循环使用标准for循环项目“for list 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....

现在它逐个循环遍历苹果中的每个元素,我希望能够做的是在每个毫秒计数的同时检查每个项目以进行颜色检查(使用的示例代码,但是原则与我想要实现的完全相同)。

性能是关键在这里我不介意它是否必须使用它的线程,但是我需要最大的速度/效率来检查每个元素而我的猜测是并行性是这样做的方式,我只是不太确定

1 个答案:

答案 0 :(得分:3)

如果您可以将某个功能映射到列表中,则可以轻松实现并行性。

def addOne (x):
    return x + 1

默认地图在一个线程上执行操作。

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

如果你的问题是地图,那就意味着它很平行。

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两者背后的理由。