首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不严重影响系统性能的情况下监视文件系统的更改?

问如何在不严重影响系统性能的情况下监视文件系统的更改?
EN

Stack Overflow用户
提问于 2011-12-01 21:29:18
回答 3查看 645关注 0票数 3

恐怕是时候问另一个新手问题了。我试图使用Python3.2.2(在本例中,版本很重要)来监视特定Windows路径的更改。最简单的方法,也是我使用的方法是:

代码语言:javascript
复制
original_state = os.listdir(path_string)

while os.listdir(path_string) == original_state:
    time.sleep(1)

change_time = datetime.datetime.now()

我编写这段代码是为了对另一个应用程序进行计时测试。考虑到这一目标,Python脚本需要(a)不对系统性能产生不利影响,(b)相对精确--误差范围为+/- 1秒是我可以证明的绝对最大值。不幸的是,这种方法不符合第一个标准:当运行这段特定的代码时,虚拟环境就会受到冲击,大大降低了我试图精确测量其性能的操作。

我读过如何查看文件系统以进行更改、如何查看更改的文件?和changes.html (推荐一篇文章来解决第二个这样的问题)。不幸的是,Tim的代码似乎是Python2.x代码--据我所知,Python3中不支持pywin32模块。

在Python 3中,我能做些什么来监视这个特定的路径,而不会遇到相同的性能问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-01 21:42:26

根据ActivePython 3.2文档,他们的pywin32现在支持Python3.x

票数 2
EN

Stack Overflow用户

发布于 2011-12-01 21:39:52

在Linux上有iNotify和pyNotify。windows上类似的异步通知机制是FindFirstChangeNotification函数,它是FileSystemWatcher类的一部分。

请看提姆·高登网页上的解决方案:

票数 1
EN

Stack Overflow用户

发布于 2013-03-25 11:01:14

还可以使用GFileMonitor监视文件或目录,Gio负责底层操作系统的详细信息。尽管如此,如果这是一个Windows程序,您可能不会使用Gtk。为子孙后代:

代码语言:javascript
复制
from gi.repository import Gio

gfile = Gio.file_new_for_path('/home/user/Downloads')
gfilemonitor = gfile.monitor(Gio.FileMonitorFlags.NONE, None)
gfilemonitor.connect('changed', callback_func)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8348557

复制
相关文章

相似问题

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