Python多处理中的传递递增索引

Python多处理中的传递递增索引,python,indexing,multiprocessing,Python,Indexing,Multiprocessing,假设我有以下代码: items = [] for index, element in elements: if index is 7: continue else: items.append(element) 我在代码中使用selenium进行web抓取,因此我希望通过使用多处理来加快抓取速度 所以应该是这样的: items = pool.map(iterate_over_elements, elements) def iterate_

假设我有以下代码:

items = []
for index, element in elements:
     if index is 7:
         continue
     else:
         items.append(element)
我在代码中使用selenium进行web抓取,因此我希望通过使用多处理来加快抓取速度

所以应该是这样的:

items = pool.map(iterate_over_elements, elements)

def iterate_over_elements(element):
     if index is 7:
        return None
     else:
        return element

如何在每次调用中将索引作为参数发送以迭代元素()?

要添加索引,您需要使用
枚举

>>> list(enumerate(['a','b','c']))
[(0, 'a'), (1, 'b'), (2, 'c')]
pool.map(fn,枚举(元素))
将调用
fn
,其元组为
(索引,元素)
。要接受这一点,您必须更改
iterate\u over\u 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\u over\u元素
接受两个参数:

def iterate_over_elements(index, element):
    ...
pool.starmap(iterate_over_elements, enumerate(elements))

如果我想给每个调用发送一个附加参数,可能会出现重复的情况?然后该函数将接收3个参数:list元素、其索引和其他参数。我建议您进行实验!