Этот шаблон появляется много, но я не могу найти прямой ответ.
Некритическая, дружественная программа может выполнять
while(True):
# do some work
Используя другие технологии и платформы, если вы хотите, чтобы эта программа работала горячо (используйте как можно больше циклов процессора), но будьте вежливы - разрешите другим программам, которые работают, чтобы эффективно замедлить меня, вы часто пишете
while(True):
#do some work
time.sleep(0)
Я читал противоречивую информацию о том, будет ли последний подход делать то, что я надеюсь на python, работая в Linux-окне. Вызывает ли это контекстный переключатель, приводящий к описанному выше поведению?
EDIT: для чего стоили, мы немного экспериментировали в Apple OSX (у них не было удобной линейки Linux). Этот ящик имеет 4 ядра плюс гиперпоточность, поэтому мы создали 8 программ с помощью всего
while(True):
i += 1
Как и ожидалось, монитор активности показывает каждый из 8 процессов, потребляя более 95% процессора (по-видимому, с четырьмя ядрами и гиперпотоками вы получаете 800% всего). Затем мы создали девятую такую программу. Теперь все 9 пробегают около 85%. Теперь убейте девятого парня и разверните программу с помощью
while(True):
i += 1
time.sleep(0)
Я надеялся, что этот процесс будет использоваться близко к 0%, а другой 8 будет работать на 95%. Но вместо этого все девять пробегают около 85%. Так что на Apple OSX сон (0), похоже, не имеет эффекта.