运行 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}"])
我有一个鼠兔接收器,可以接收命令并执行另一个 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}"])