这是我第一次与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()
语句未出现在我的终端中,并且该票证的大块未被删除。
谢谢您的帮助!