首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >挂钩Python标准库模块

问挂钩Python标准库模块
EN

Stack Overflow用户
提问于 2011-09-22 10:49:38
回答 2查看 378关注 0票数 1

问题

我已经为Python编写了一个替代的threading模块。将标准库中常用threading模块的所有使用与我自己的挂接在一起的最好方法是什么?挂钩应该是选择加入的,并基于每个项目或每个可执行文件。

执行此语句时:

代码语言:javascript
复制
import threading

我希望加载我的模块,而不是默认的模块。

请注意,在将来,我可能还会挂接其他几个标准模块,因此解决挂接几个模块的解决方案是最好的。

为什么

我已经通过greenlet和Linux的eventfd()和epoll()系统调用实现了IO并发性。除了一个sys.modules钩子和一个替换的socket类之外,它的工作方式是透明的。希望让这个钩子更好和更一致。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-22 11:46:27

您可以尝试使用python的meta_path钩子:

http://www.python.org/dev/peps/pep-0302/

它允许您添加一个对象,该对象可以覆盖导入过程的一部分。我认为您可以通过这种方式用自己的模块替换标准模块。不过,我不确定它是否比打补丁sys.modules更好。

票数 3
EN

Stack Overflow用户

发布于 2011-09-22 10:53:13

您是否可以将替换的threading模块放在某个目录中,并确保当您想要使用该目录时,该目录在PYTHONPATH中列出?这应该意味着在导入threading时,将在默认位置之前搜索目录,Python将找到您的模块并停止。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7509016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档