Имам програма, работеща на стар лаптоп, която постоянно следи папка 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