Многие пользователи Python сталкиваются с противоположной проблемой - моя программа использует слишком мало процессора.Я уже получил помощь при переходе на многопроцессорную обработку, чтобы использовать все четыре ядра моего рабочего компьютера, и в результате я увидел реальное улучшение производительности.Но улучшение несколько ненадежно.Использование ЦП моей программы, по-видимому, ухудшается, поскольку она продолжает работать - даже при запущенных шести процессах.После добавления некоторых отладочных сообщений я обнаружил, что это произошло из-за того, что некоторые процессы, которые я порождал (все они должны работать до завершения), умирали преждевременно.Основная часть метода, который запускают процессы, представляет собой цикл while True, и единственным выходом является этот блок:
try:
f = filequeue.get(False)
except Empty:
print "Done"
return
filequeue заполняется до создания подпроцессов, поэтому он определенно не является на самом делепустой.Все процессы должны завершиться примерно в одно и то же время, когда он фактически опустеет.Я попытался добавить ненулевой параметр времени ожидания (0,05) в вызов Queue.get, но это не устранило проблему.Почему я могу получить исключение Queue.empty из непустой очереди?