У меня есть список крупных генераторов, таких как:
test_list = [(i for i in range(100000000)) for x in range(100)]
Это намного больше, чем у меня, но демонстрирует причину для генератора.
Я хочу оценить функцию на каждомнезависимо от генератора:
def test_function(generator):
results = []
for i in range(3):
results.append(next(generator))
return results
Для такой функции имеет смысл не преобразовывать весь генератор в список перед применением функции.
Я хочу запустить его параллельно:
import multiprocessing as mp
output = mp.Queue()
processes = [mp.Process(target=test_function, args=(generator, )) for generator in test_list]
# Run processes
for p in processes:
p.start()
# Exit the completed processes
for p in processes:
p.join()
# Get process results from the output queue
results = [output.get() for p in processes]
Однако я получаю сообщение об ошибке, что генератор не может быть засечен.
Как можно запуститьэтот процесс параллельно?
Спасибо, Джек