我为Python编写了一个替换threading
模块。使用我自己的标准库挂钩常用threading
模块的所有用法的最佳方法是什么?挂钩应该是选择加入,并且是按项目或按可执行的基础。
执行此语句时:
import threading
我希望加载模块而不是默认模块。
请注意,将来我也可能会挂钩其他几个标准模块,因此解决几个模块的问题最好。
我通过greenlet和Linux的eventfd()
和epoll()
系统调用实现了IO并发。除了sys.modules
钩子和替换socket
类之外,它透明地工作。希望使这个钩子更好,更一致。
答案 0 :(得分:3)
您是否可以将替换threading
模块放在某个目录中,并确保在您想要使用该目录时列在PYTHONPATH
中?这应该意味着在导入threading
时在默认位置之前搜索目录,Python将找到你的模块并停止。
答案 1 :(得分:3)
您可以尝试使用python的meta_path hook:
http://www.python.org/dev/peps/pep-0302/
它允许您添加一个可以覆盖部分导入过程的对象。我认为你可以用这种方式用你自己的模块代替标准模块。我不确定它比修补sys.modules更好。