windows 看门狗CPU/功耗

polhcujo  于 2022-12-27  发布在  Windows
关注(0)|答案(1)|浏览(134)

我试图创建一个简单的文件重命名器使用看门狗在Python中,这是非常简单的,任何创建的“xlsx”文件将被重命名为“Base.xslx”
我通过使用下面的代码很快就得到了它,但是运行它的时候会消耗大量的CPU和电源,是代码本身有什么问题还是这是正常的?

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()
vsmadaxz

vsmadaxz1#

对我来说,time.sleep(0)似乎是问题之一。观察者类是基于事件的,所以它不会根据无限循环中的睡眠参数来监视文件夹,但它会在事件从操作系统到达时立即运行处理程序方法。
这个无限循环使用了整个CPU内核(正如空的无限循环通常所做的那样),因此您应该将time.sleep()参数更改为1(或任何比1更大的参数,因为KeyboardInterrupt将中断休眠方法,而不管其“长度”如何)。
你也应该使用PatternMatchingEventHandler(),它的功能和你的几乎一样,但是它只检查新创建的文件(不是每个文件,对于每个处理程序方法调用),你甚至不需要写任何新的类。

相关问题