在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 中处理 graphql 查询和片段?
获取 pika.exceptions.StreamLostError:传输指示 EOF 在运行使用 pika 的 python 脚本 docker 映像时