gpt4 book ai didi

python - 当某些项目相互依赖时,如何运行异步进程列表?

转载 作者:行者123 更新时间:2023-11-28 19:26:08 25 4
gpt4 key购买 nike

我有一个我需要运行的动态生成的进程列表(带参数的命令行库)。

我知道他们中的一些人是相互依赖的。我已经有一些包含此信息的对象。例如,standalone_exec_item 包含 process_data.process_id 和 dependent_on_process_ids(这是一个进程 ID 列表。)

目前我正在考虑使用多处理库来异步运行进程列表,就像这样:

from multiprocessing import Process
import subprocess

def execute_standalone_exec_items(standalone_exec_items):

standalones = []

def run_command(command):
output = subprocess.check_output(shlex.split(command))
return output

for standalone_exec_item in standalone_exec_items:
standalone_command = generate_command(standalone_exec_item.process_data)

standalone = Process(
target=run_command,
args=(standalone_command,)
)
standalones.append(standalone)

for standalone in standalones:
standalone.start()

while True:
flag = True
for standalone in standalones:
if standalone.is_alive():
flag = False
if flag:
break

但是我想知道是否有更好的方法在运行依赖进程之前等待异步进程运行。我可以使用回调吗?我听说过 Twisted 的 deferred,我可以使用它吗?

最佳做法是什么?

编辑:Popen 是非阻塞的并且我不需要使用多处理是否正确?或者我需要使用 fcntl() 吗?

最佳答案

我会使用一个消息队列,其中一些进程发布消息,被调用的进程将订阅这些消息。

关于python - 当某些项目相互依赖时,如何运行异步进程列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11844780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com