我想创建一个bash
(或zsh
,没关系。)服务器,该服务器接受命令,运行它们并返回结果(return code
,stdout
,stderr
)。我的目的是避免为要在bash
脚本中运行的每个bash
命令启动新的Python
实例,因为bash
点文件需要相当长的加载时间。符合以下精神:
bash = bash_instance() # pay the startup penalty ONCE
bash.run('echo hi') # Just run the command without the startup time
...
bash.run('curl ipinfo.io')
return_code, stdout, stderr = bash.run('cat file.txt')
一种用于外壳的Remote Method Call
。
您可以使用multiprocessing:
from multiprocessing import Pool
zsh = zsh_instance()
with Pool(5) as p:
print(p.map(zsh.run, [
('some-command',),
('some-other-command',)
]))