У меня есть подпроцесс через multiprocessing.Process
и очередь через multiprocessing.Queue
.multiprocessing.Queue висит, когда процесс умирает
Основной процесс использует multiprocessing.Queue.get()
для получения новых данных. Я не хочу, чтобы там был тайм-аут, и я хочу, чтобы он блокировал.
Однако, когда дочерний процесс умирает по какой-либо причине (вручную убит пользователем через kill
, или segfault и т. Д.), Queue.get()
просто будет висеть вечно.
Как я могу избежать этого?
Хороший улов. Я попробовал «Pipe», когда отвечал здесь, но у меня не получилось EOF-ошибка, когда клиент умер. Я думаю, что забыл закрыть связь. –