【发布时间】:2013-08-01 13:22:32
【问题描述】:
我有一个在旧笔记本电脑上运行的程序,它会不断监控 Dropbox 文件夹中是否添加了新文件。当它运行时,Python 进程在双核机器上使用了接近 50% 的 CPU,在 8 核机器上使用了大约 12%,这表明它使用了接近 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() 等待上,我不会认为这会占用大量 CPU - 而the answers here 似乎说它应该'不会的。
那么两个问题:
1) 既然time.sleep() 不应该如此占用 CPU,那么这里发生了什么?
2) 是否有另一种方法可以监控文件夹的更改,从而降低运行速度?
【问题讨论】:
-
你的
time.sleep缩进太远,把它放在while True主块中,这样可以确保它一直运行。