Я впервые работаю с concurrent.futures.ProcessPoolExecutor()
.
Я пытаюсь одновременно обрабатывать данные из итерируемого на всех моих процессорах с Executor.map()
. Однако функция, предоставленная этому методу, похоже, не выполняется.
Итерация, с которой я работаю, - это генератор. Я попытался преобразовать генератор в список, прежде чем передать его в Executor.map()
с помощью list()
, что занимает много времени, но функция обработчика по-прежнему не вызывается.
Я пытался увеличить атрибут chunksize
с Executor.map()
до 100, но, похоже, это не дало никакого эффекта.
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()
, по-видимому, никогда не выполняется. Оператор print()
в этой функции не отображается в моем терминале, и часть билетов не удаляется.
Спасибо за помощь!