Я использую multiprocessing.Process
для загрузки некоторых изображений и сохранения их в общей памяти, как объяснено здесь . Проблема в том, что иногда мой код падает из-за огромного скачка памяти в совершенно случайные моменты времени. Я просто имел представление о том, что может быть причиной этого: у процесса не было достаточно времени, чтобы скопировать содержимое изображения в общую память в ОЗУ к моменту времени join()
. Чтобы проверить свою гипотезу, я добавил time.sleep(0.015)
после выполнения join()
для каждого из моих процессов, и это уже уменьшило количество всплесков памяти примерно на 90% и более. Тем не менее, я до сих пор не уверен на 100%, не получим ли частые всплески памяти, потому что это небольшое количество времени может помочь полностью передать данные в общую память или нет.
Итак, мне интересно, есть ли способ убедиться, что дочерний процесс завершил копирование данных в память до вызова .join()
? Я не хочу использовать фиксированный номер при звонке time.sleep()
. Было бы здорово узнать, когда данные были полностью перенесены в общую память, а затем выполнить join()
.