运行 python 中的并行代码(鼠兔库)

run code in parallel in python (pika library)

我有一个鼠兔接收器,可以接收命令并执行另一个 python 脚本。问题是我无法 运行 将脚本作为多进程或线程并行处理。如果我通过 mqtt 协议收到命令,它会等到完成 "make.py" 函数后再次执行它。我希望它并行 运行。有人可以帮忙吗?

def call_mkdt(ch, method, properties, body):
    os.system(f"make.py {body}")


def consume():
    channel.basic_consume(queue='UploadCompleted', on_message_callback=call_mkdt, auto_ack=True)
    print(' [*] ETL')
    try:
        channel.start_consuming()
    except KeyboardInterrupt:
        channel.stop_consuming()

if __name__== "__main__":
    p1 = threading.Thread(name="Hello1", target=consume)
    p1.start()

我想你不想等待 make.py 完成执行, 您可以使用 python 的 subprocess 模块中的 subprocess.Popen 函数。

您可以在 docs

参考有关 Popen 函数的更多信息

替换:

def call_mkdt(ch, method, properties, body):
    os.system(f"make.py {body}")

搭配:

import subprocess

def call_mkdt(ch, method, properties, body):
    subprocess.Popen(["make.py", f"{body}"])