问题
我已经为Python编写了一个替代的threading模块。将标准库中常用threading模块的所有使用与我自己的挂接在一起的最好方法是什么?挂钩应该是选择加入的,并基于每个项目或每个可执行文件。
执行此语句时:
import threading我希望加载我的模块,而不是默认的模块。
请注意,在将来,我可能还会挂接其他几个标准模块,因此解决挂接几个模块的解决方案是最好的。
为什么
我已经通过greenlet和Linux的eventfd()和epoll()系统调用实现了IO并发性。除了一个sys.modules钩子和一个替换的socket类之外,它的工作方式是透明的。希望让这个钩子更好和更一致。
发布于 2011-09-22 11:46:27
您可以尝试使用python的meta_path钩子:
http://www.python.org/dev/peps/pep-0302/
它允许您添加一个对象,该对象可以覆盖导入过程的一部分。我认为您可以通过这种方式用自己的模块替换标准模块。不过,我不确定它是否比打补丁sys.modules更好。
发布于 2011-09-22 10:53:13
您是否可以将替换的threading模块放在某个目录中,并确保当您想要使用该目录时,该目录在PYTHONPATH中列出?这应该意味着在导入threading时,将在默认位置之前搜索目录,Python将找到您的模块并停止。
https://stackoverflow.com/questions/7509016
复制相似问题