执行器映射似乎未在处理生成器

时间:2019-03-29 17:18:50

标签: python parallel-processing process generator concurrent.futures

这是我第一次与concurrent.futures.ProcessPoolExecutor()合作。

我正在尝试使用Executor.map()在所有CPU上同时处理来自可迭代对象的数据。但是,提供给该方法的函数似乎没有执行。

我正在使用的迭代器是一个生成器。我尝试将生成器转换为列表,然后再通过Executor.map()将生成器传递给list(),这花费了很长时间,但是仍然没有调用处理程序函数。

我尝试将chunksize的{​​{1}}属性增加到100,但这似乎没有任何效果。

Executor.map()

在上面的示例中,def delete_tickets(tickets): print('==> Deleting chunk of tickets') # never appears in my terminal zenpy_client.tickets.delete(tickets) return 'success' # this is a generator with a length of 1,512 tickets = zenpy_client.search(type='ticket', tags=DELETE_WITH_TAG) with concurrent.futures.ProcessPoolExecutor() as executor: # also tried # tickets = list(tickets) # same result (nothing happens) for result in executor.map(delete_tickets, tickets, chunksize=100): print(result) 似乎从未执行过。该函数中的delete_tickets()语句未出现在我的终端中,并且该票证的大块未被删除。

谢谢您的帮助!

0 个答案:

没有答案