Используя Python 3.7.1, это работает только
with concurrent.futures.ThreadPoolExecutor(max_workers = 2) as executor:
print("Exec")
result = executor.map(lambda a: kernel(**a), params)
также работает
for p in params:
kernel(**p)
kernel
возвращает дикт и выполняет некоторые вычислительные операции. Он не использует глобальные переменные. params содержит пользовательские классы, но pickle.dumps(params)
не возвращает ошибок и байтовую строку.
Сам файл импортируется, то есть имеет if __name__ == "__main__": main()
в нижней части.
Однако, если я использую ProcessPoolExecutor
, выполнение останавливается. Exec
напечатано, больше ничего. Загрузка процессора простаивает.
Я бы предпочел, чтобы модель Process обошла GIL.
Спасибо!