问题
我已经为 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 更好。
