gevent + subprocess:是否可以修补某些导入模块中使用的子进程,例如sh?

时间:2016-05-19 12:55:43

标签: python subprocess gevent

如何将sh(python模块)与gevent一起使用?

如果我直接运行suprocess,我会这样做:

import gevent
from gevent.subprocess import Popen, PIPE, STDOUT
patch_all()

subprocess.Popen(...)

但我如何将shgevent一起使用? 说:

from sh import tar
tar("cf", "file.tar", "dir")

tar只是一个例子,我想一般找到答案。 它有可能吗?

如何修补sh中使用的子流程?

或更一般的问题:

如果patch subprocess用于某些导入的模块(如sh),我该怎么办?它有可能吗?

1 个答案:

答案 0 :(得分:2)

sh模块使用子进程模块。它简单而直接地执行os.fork后跟os.execve。它还管理自己的输入和输出管道。因此,对子进程模块所做的任何操作都不会影响sh

所以问题的答案是,不,修补子流程并期望它对sh有任何影响是不可能的。