gpt4 book ai didi

python - 检测 python 模块是否更改然后重新加载

转载 作者:IT老高 更新时间:2023-10-28 22:23:03 26 4
gpt4 key购买 nike

所以我正在开发一个包含许多模块的相当大的 python 项目。 “主”(可运行)模块是一个守护进程(实际上是一个 Thrift 守护进程),它调用其他模块以实现其实际功能。启动守护进程需要很长时间,因为某些模块的初始化过程相当冗长。

所以,当我启动守护进程时,我会等待……比如说……加载所有内容需要 2 分钟,这在总体方案中还算不错。然而,对于开发来说,这变得很痛苦,因为我需要每次都重新启动守护进程,这浪费了我很多时间。

大多数模块只需几秒钟即可加载。理想情况下,我想做的是检测特定模块中的任何文件何时发生更改,然后重新加载该特定模块。我已经想通了how to reload a module ,但此时我不知道如何查看特定模块的更改。请记住,在这种情况下,模块不是单个 .py 文件,而是包含 __init__.py 和 5-10 .py< 的目录 文件,所以我需要检测其中任何文件何时发生了变化。

这是项目布局(如果有什么不同的话)

project
| -- daemonize.py
| -- main.py
| -- moduleA
| | -- __init__.py
| | -- happy_panda.py
| ` -- sad_panda.py
| -- moduleB
| | -- __init__.py
| | -- takes_forever_to_load.py
| ` -- seriously_get_some_coffee.py
| -- moduleC
| | -- __init__.py
| | -- frequently_changes.py
| | -- reasons_i_hate_my_job.txt
| ` -- home_address_of_moduleB_developer.txt
` -- service.py <-- uses modules A, B, and C

感谢任何想法或建议。

编辑

感谢您的宝贵反馈。这是我根据建议创建的代码。有一个小错误,pyinotify 似乎收到了多个通知,但这对我来说是一个非常小的问题,所以我不打算修复它。

https://gist.github.com/1013122

最佳答案

Detect File Change Without Polling

再加上您已经知道如何重新加载您的模块,这个答案几乎可以填满它。当文件被修改时,它使用 Inotify 来“通知”(看看他们在那里做了什么)。

关于python - 检测 python 模块是否更改然后重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6270395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com