小编bil*_*lyw的帖子

Python的sh模块 - 在后台运行Command包装器

当使用python的sh模块(不是stdlib的一部分)时,我可以将路径中的程序作为函数调用并在后台运行它:

from sh import sleep

# doesn't block
p = sleep(3, _bg=True)
print("prints immediately!")
p.wait()
print("...and 3 seconds later")
Run Code Online (Sandbox Code Playgroud)

我可以使用sh的Command包装并传入可执行文件的绝对路径(如果可执行文件不在我的路径中或者包含诸如此类的字符,则会有帮助.):

import sh
run = sh.Command("/home/amoffat/run.sh")
run()
Run Code Online (Sandbox Code Playgroud)

但是尝试在后台运行包装的可执行文件,如下所示:

import sh
run = sh.Command("/home/amoffat/run.sh", _bg=True)
run()
Run Code Online (Sandbox Code Playgroud)

失败并出现回溯错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __init__() got an unexpected keyword argument '_bg'
Run Code Online (Sandbox Code Playgroud)

如何sh.Command在后台运行包装的可执行文件?寻找一个优雅的解决方案.

编辑:

我使用python解释器来测试传递_bg给命令(而不是包装器),我现在意识到这是测试阻塞和非阻塞进程的一种不好的方法:

>>> import sh
>>> hello = sh.Command("./hello.py")
>>> hello(_bg=True) # 5 second delay …
Run Code Online (Sandbox Code Playgroud)

python background-process

6
推荐指数
1
解决办法
6828
查看次数

标签 统计

background-process ×1

python ×1