ben*_*man 1 python iteration parallel-processing
我创建的列表中包含的项不超过8个,现在我用标准的for循环“针对列表中的项目:”遍历该项目:我想知道是否有一种方法可以准确地检查所有元素同时?我看过一些有关使用zip同时遍历2个列表的帖子,这可能会有所帮助。
如果没有办法同时遍历一个list元素,我想我需要将一个单独的列表拆分为4个单独的列表,然后使用zip遍历2个,并在一个单独的线程上同时进行另外2个,这似乎但这可能是一个笨拙的修复程序。
任何帮助,将不胜感激。
编辑 抱歉,我不清楚
apples = ['green', 'green', 'green', 'red']
Run Code Online (Sandbox Code Playgroud)
现在,我使用for循环遍历每个元素,
for apple in apples:
checkAppleColour(apple)
#Do some more stuff depending on colour....
Run Code Online (Sandbox Code Playgroud)
现在,它一个接一个地循环遍历苹果中的每个元素,我想做的是在每毫秒精确计数的同时,对每个项目进行一次颜色检查(使用的示例代码,但原理是对于我要达到的目标也是如此)。
在这里,性能是关键,我不介意是否必须使用它的线程,但是我需要最大的速度/效率来检查每个元素,我的猜测是并行性是做到这一点的方式,我只是不太确定该怎么做。
如果可以将函数映射到列表,则并行性很容易。
def addOne (x):
return x + 1
Run Code Online (Sandbox Code Playgroud)
默认映射在一个线程上执行操作。
map(addOne, range(1, 4)) #When iterated over produces [2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
如果您的问题是地图,则意味着它是平行的。
from multiprocessing import Pool
pool = Pool()
pool.map(addOne, range(1, 4)) ##When iterated over produces [2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
这使用多个过程。multiprocessing.dummy.Pool
是一个线程池。有关这两者背后原理的详尽介绍,请参见本文。
归档时间: |
|
查看次数: |
2869 次 |
最近记录: |