У меня есть в concurrent.futures, который обычно работает с chunksize = 1. Тем не менее, иногда я получаю большой набор данных, который требует большего размера. В настоящее время я решил эту проблему с помощью следующего кода:
for i in datasets:
try:
with concurrent.futures.ProcessPoolExecutor() as executor:
results=tuple(executor.map(do_something, parameters, chunksize=1)
except concurrent.futures.process.BrokenProcessPool:
try:
with concurrent.futures.ProcessPoolExecutor() as executor:
results=tuple(executor.map(do_something, parameters, chunksize=2)
except concurrent.futures.process.BrokenProcessPool:
try:
with concurrent.futures.ProcessPoolExecutor() as executor:
results=tuple(executor.map(do_something, parameters, chunksize=4)
etc. etc. etc....
except concurrent.futures.process.BrokenProcessPool:
print('code failed')
Это прекрасно работает, но, очевидно, действительно не элегантно и некрасиво. В любом случае, что я могу сделать это проще?