python - 如何在另一个长时间运行的 python 脚本运行时运行其他行?
问题描述
我正在研究一个在 cmd 上运行另一个非常长时间运行的脚本的脚本。但是,我还想在子进程运行时运行其他行。
这是我的代码:
from subprocess import Popen
p = Popen("python script.py")
print("Other stuff")
事情是没有 script.py 完成我无法得到打印的文本。我该如何解决这个问题?
解决方案
您很可能正在寻找多处理模块。您将如何启动流程以及它们将做什么 - 由您自己决定,而该模块将使您能够运行多个流程并收集每个流程执行的结果以及输出(如果有)。
下面是官方模块文档中提到的第一种方式的快速实现,只是为了展示它是如何工作的:
from multiprocessing import Pool
from subprocess import check_call
commands = [
'echo {time}; sleep {time}; echo {time}'.format(time=5),
'echo {time}; sleep {time}; echo {time}'.format(time=10),
'echo {time}; sleep {time}; echo {time}'.format(time=4),
]
def sample(command):
check_call(command, shell=True)
if __name__ == '__main__':
with Pool(len(commands)) as p:
p.map(sample, commands)
推荐阅读
- c++ - Assimp + OpenGL 仅部分加载
- java - 可以在 json 文档中使用互联网上所有可用的图像链接吗?
- r - 如何将其变成 R 中的“列表列表”
- angular - Angular - 在索引处绑定到字符串数组
- javascript - 正则表达式与句子中的特定文本不匹配?
- go - 跳转功能
- android - 更改 TextInputLayout 笔触宽度和提示字体
- docker - 如何在 Docker 中读取卷的内容?
- node.js - Websocket连接在chrome中工作但在firefox中无法连接?
- sql-server - 发生 DML 时,如何在 SQL Server 2008 SE 中登录另一个表,哪些列受到影响,旧值和每条记录的新值?