问题
我已经为 Python 编写了一个替换 threading
模块。将标准库中常用的 threading
模块的所有使用与我自己的连接在一起的最佳方法是什么? Hook 应该是选择加入的,并且基于每个项目或每个可执行文件。
当这条语句被执行时:
import threading
我希望加载我的模块而不是默认模块。
请注意,将来我可能还会挂接其他几个标准模块,因此解决挂接几个模块的解决方案是最好的。
为什么
我已经通过 greenlets 和 Linux 的 eventfd()
和 epoll()
系统调用实现了 IO 并发。它透明地工作,除了 sys.modules
Hook 和替换 socket
类。希望使这种 Hook 更好、更一致。
最佳答案
您可以尝试使用 python 的 meta_path 钩子(Hook):
http://www.python.org/dev/peps/pep-0302/
它将允许您添加一个可以覆盖部分导入过程的对象。我认为您可以用这种方式用您自己的模块替换标准模块。不过,我不确定它是否比修补 sys.modules 更好。
关于python - Hook Python 标准库模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7509016/