在python(pika库)中并行运行代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在python(pika库)中并行运行代码相关的知识,希望对你有一定的参考价值。

我有一个pika接收器,可以接收命令并执行另一个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.Popen模块中使用subprocess函数。

您可以在Popen处参考有关docs功能的更多信息>

替换:

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

With:

import subprocess

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

以上是关于在python(pika库)中并行运行代码的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

Python线程库:代码线性执行而不是并行执行

关于python中pika模块的问题

你如何在 python 中处理 graphql 查询和片段?

获取 pika.exceptions.StreamLostError:传输指示 EOF 在运行使用 pika 的 python 脚本 docker 映像时

rabbitMQ实战---------使用pika库实现hello world