假设我有以下代码:
items = []
for index, element in elements:
if index is 7:
continue
else:
items.append(element)
我在代码中使用selenium进行网页报废,所以我想通过使用多处理来加快速度。
所以就是这样:
items = pool.map(iterate_over_elements, elements)
def iterate_over_elements(element):
if index is 7:
return None
else:
return element
如何在每次调用iterate_over_elements()时将索引作为参数发送?
答案 0 :(得分:0)
要添加索引,您需要使用enumerate
:
>>> list(enumerate(['a','b','c']))
[(0, 'a'), (1, 'b'), (2, 'c')]
pool.map(fn, enumerate(elements))
会使用fn
元组调用(index, element)
。要接受这一点,您必须更改iterate_over_elements
功能:
def iterate_over_elements(index_and_element):
index, element = index_and_element
...
pool.map(iterate_over_elements, enumerate(elements))
或者,如果你有python> = 3.3,你可以使用Pool.starmap
并让iterate_over_elements
接受两个参数:
def iterate_over_elements(index, element):
...
pool.starmap(iterate_over_elements, enumerate(elements))