首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Watchdog CPU/电源使用

Watchdog CPU/电源使用
EN

Stack Overflow用户
提问于 2020-05-24 04:32:19
回答 1查看 270关注 0票数 1

我正在尝试创建一个简单的文件重命名使用watchdog在python中,它是非常简单的,任何创建的"xlsx“文件将重命名为"Base.xslx”

我使用下面的代码很快就得到了它,但是当它运行时消耗了大量的CPU和电力,是代码本身有问题还是这是正常的?

代码语言:javascript
复制
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import time
import os

fp = 'C:/yourpath/'

class ExampleHandler(FileSystemEventHandler):
    def on_created(self, event):
        time.sleep(1)
        for file_name in os.listdir(fp):
            if '.xlsx' in file_name:
                name=fp+file_name
                os.rename(name,"Base.xlsx")


observer = Observer()
event_handler = ExampleHandler() 
observer.schedule(event_handler, path=fp)
observer.start()


try:
    while True:
        time.sleep(0)
except KeyboardInterrupt:
    observer.stop()

observer.join()
EN

回答 1

Stack Overflow用户

发布于 2020-10-18 21:03:13

对我来说,time.sleep(0)似乎是其中一个问题。观察者类是基于事件的,所以它不会在无限循环中根据睡眠参数来监视文件夹,但一旦事件从操作系统到达,它就会运行处理程序方法。

这个无限循环使用了整个CPU核心(就像通常的空无限循环一样),所以您应该将time.sleep()参数更改为1 (或者任何大于该值的参数,这都无关紧要,因为KeyboardInterrupt将中断休眠方法,而不管它的“长度”)。

您还应该使用PatternMatchingEventHandler(),它的功能与您的几乎相同,但它只检查新创建的文件(不是每个文件,对于每个处理程序方法调用),您甚至不需要编写任何新类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61978232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档