gpt4 book ai didi

python - 在不重新启动主脚本的情况下加载/重新加载 Python 中的部分代码

转载 作者:太空狗 更新时间:2023-10-30 00:28:39 26 4
gpt4 key购买 nike

简介

过去几天我一直在研究 Twisted,不到一个月前才开始使用 Python。我的第一个倾向是玩我每天都知道和使用的东西,IRC。感谢 ircLogBot.py,我已经建立并运行了一个基本的 IRC 连接示例。

问题

我希望有一些任意代码在收到 IRC 事件 (PRIVMSG/CTCP/JOIN/PART) 时运行,并且出于调试目的我希望能够更改那段代码然后重新加载它而不关闭整个脚本并重新连接到 IRC 服务器。

最后的笔记

它不一定是包含 Twisted 的解决方案,因为我还没有完全理解它。虽然我认为这是一种扭曲的事情,但作为一个事件驱动的框架,可能设计得很好。

最佳答案

Twisted 在 twisted.python.rebuild 中有一些内置功能它提供了更全面的 Python 内置 reload 实现。功能。仍然存在一些限制,但它与 Python 的内置重新加载的主要区别在于它会找到对象的旧实例并将它们的类替换为新版本。 (主要限制是您必须意识到您的实例可能具有与您当前版本的 __init__ 不匹配的旧状态,如果您更改了它,这就是 rebuild.Sensitive。是为了。)

如果你想做一些真正花哨和自动化的东西,你可以设置一个文件系统监视器来检测文件何时更改,并在文件更改时重新加载相关模块。在 Linux 上,您可以使用 Twisted 的 inotify支持更改通知,在 OS X 上,您可以使用 cfreactor连同 FSEvents原料药 via PyObjC . (我不知道哪些文件更改监控方案适用于 win32,但也可能适用。)

关于python - 在不重新启动主脚本的情况下加载/重新加载 Python 中的部分代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7912250/

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