检查所有导入的Python模块中的代码变更

2 投票
2 回答
352 浏览
提问于 2025-04-11 09:20

几乎每个Python的网页框架都有一个简单的服务器,它可以运行一个叫做wsgi的应用程序,并且每次源代码发生变化时,都会自动重新加载导入的模块。我知道我可以查看代码来了解这是怎么实现的,但那可能需要一些时间,我只是出于好奇在问。有没有人知道这是怎么做到的?

2 个回答

1

reload()这个功能不太好用。“重新加载”通常是通过分叉(forking)来实现的。

要真正实现“真实”的reload()功能是非常困难的,即使是最认真的尝试,比如twisted.python.rebuild,也并不完美。

2

作为其中一个重载机制的作者(就是在werkzeug里的那个),我可以告诉你,这个机制并不好用。所有的重载机制其实都是先复制一份进程,然后如果有监控线程发现某个模块在文件系统上发生了变化,就会重启这个复制的进程。

直接使用 reload() 是不行的,因为重新加载的模块的引用并不会被更新。

撰写回答