【发布时间】:2011-09-22 02:49:37
【问题描述】:
问题
我已经为 Python 编写了一个替换 threading 模块。将标准库中常用的 threading 模块的所有用途与我自己的挂钩的最佳方法是什么?挂钩应该是可选的,并且是基于每个项目或每个可执行文件的。
当这条语句被执行时:
import threading
我希望加载我的模块而不是默认模块。
请注意,将来我还可能会挂钩其他几个标准模块,因此解决挂钩几个模块的解决方案是最好的。
为什么
我已经通过 greenlets 和 Linux 的 eventfd() 和 epoll() 系统调用实现了 IO 并发。除了 sys.modules 钩子和替换 socket 类之外,它可以透明地工作。希望让这种挂钩更好、更一致。
【问题讨论】:
-
只是一个非冒犯性的问题:为什么?
-
不,我的意思是你为什么需要替换而不是仅仅在
site-packages将其作为另一个模块?为什么要替换“几个”其他模块? -
@Matt 你坐在 12.8k 代表上,你还没有学会礼貌?真丢脸。
-
实际上,我认为 sys.modules hack 可能是最好的方法
-
您刚刚将问题从“替换 Python 标准库模块”编辑为“挂钩 Python 标准库模块”。我想我下面的答案不是你想要的。那么,从这个意义上说,究竟什么是“挂钩”呢?当你
import threading时你需要做什么?
标签: python multithreading import python-3.x