У меня есть что-то вроде этого outputs = Parallel(n_jobs=12, verbose=10)(delayed(_process_article)(article, config) for article in data)
Случай 1: Запуск на Ubuntu с 80 ядрами:
CPU(s): 80
Thread(s) per core: 2
Core(s) per socket: 20
Socket(s): 2
Всего 90 000 задач.На отметке 67k он терпит неудачу и прекращается.joblib.externals.loky.process_executor.BrokenProcessPool: A process in the executor was terminated abruptly, the pool is not usable anymore.
Когда я наблюдаю за top
на 67k, я вижу резкое падение памяти
top - 11:40:25 up 2 days, 18:35, 4 users, load average: 7.09, 7.56, 7.13
Tasks: 32 total, 3 running, 29 sleeping, 0 stopped, 0 zombie
%Cpu(s): 7.6 us, 2.6 sy, 0.0 ni, 89.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 33554432 total, 40 free, 33520996 used, 33396 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 40 avail Mem
Случай 2: Mac с 8 ядрами
hw.physicalcpu: 4
hw.logicalcpu: 8
Но на Mac этонамного медленнее .. И удивительно, что не погибает при 67k ..
Кроме того, я уменьшил параллелизм (в случае 1) до 2,4, и он все еще не работает :(Почему это происходит? Кто-нибудь сталкивался с этой проблемой раньше и имеет исправление?
Примечание: когда я запускаю для 50 000 задач, он работает хорошо и не дает никаких проблем.
Спасибо!