Постарайтесь выполнить следующие шаги: 1. Запустите cmd как Administrator 2. Бродячая остановка 3. бродячая до 4. если требуется бродяжничество, но как только бродяга вверх.
Я вообразил бы , time.sleep () будет иметь меньше служебным в системе. Используя передача заставит цикл сразу переоценивать и привязывать ЦП, тогда как использование time.sleep позволит выполнению быть временно приостановленным.
РЕДАКТИРОВАНИЕ : только для подтверждения точки зрения, если Вы запускаете интерпретатор Python и выполняете это:
>>> while True:
... pass
...
можно наблюдать, что Python начинает съедать выше на 90-100% ЦП немедленно, по сравнению с:
>>> import time
>>> while True:
... time.sleep(1)
...
, Который едва ровные регистры на Мониторе Действия (использующий OS X здесь, но это должно быть то же для каждой платформы).
Почему сон? Вы не хотите спать, Вы хотите ожидать потоков для окончания.
Так
# store the threads you start in a your_threads list, then
for a_thread in your_threads:
a_thread.join()
См.: thread.join
Вы не даете много контекста тому, что Вы действительно делаете, но возможно Queue
мог использоваться вместо явного цикла активного ожидания? В противном случае я принял бы sleep
, будет предпочтительно, поскольку я полагаю, что это использует меньше ЦП (как другие уже отметили).
[Отредактированный согласно дополнительной информации в комментарии ниже.]
, Возможно, это очевидно, но так или иначе, что Вы могли , делают в случае, где Вы читаете, информация от блокирования сокетов состоит в том, чтобы иметь один поток, считанный из сокета и сообщения соответственно форматированные сообщения в Queue
, и затем иметь остальную часть Ваших потоков "рабочего", читающих из той очереди; рабочие затем заблокируются при чтении из очереди без потребности ни в pass
, ни в sleep
.
Я всегда видел/слышал, что использование сна является лучшим способом сделать это. Используя сон помешает использованию ЦП Вашего интерпретатора Python взбеситься.