У меня есть программа, работающая на старом ноутбуке, которая постоянно отслеживает папку Dropbox на предмет добавления новых файлов. Когда он работает, процесс Python использует около 50% ЦП на двухъядерной машине и около 12% на 8-ядерной машине, что предполагает, что он использует почти 100% одного ядра). Это отдает много тепла.
Соответствующий бит кода:
while True:
files = dict ([(f, None) for f in os.listdir(path_to_watch)])
if len(files) > 0:
print "You have %s new file/s!" % len(files)
time.sleep(20)
В случае отсутствия нового файла, безусловно, большую часть времени следует проводить в ожидании time.sleep()
, которое, как я бы не подумал, будет интенсивно использовать ЦП - и ответы здесь говорят, что этого не должно быть.
Итак два вопроса:
1) Так как time.sleep()
не должен сильно нагружать ЦП, что здесь происходит?
2) Есть ли другой способ мониторинга папки на наличие изменений, который будет работать круче?
time.sleep
имеет слишком большой отступ, поместите его в основной блокwhile True
, это гарантирует, что он всегда будет работать. - person Wessie   schedule 01.08.2013