控制python进程的好方法
在哪里可以看到控制流程的最佳实践 我特别想知道如何发出关机命令。我在想一个全局布尔值,每个进程都会进行轮询 这也是在活动进程之间传递数据的好方法控制python进程的好方法,python,multiprocessing,Python,Multiprocessing,在哪里可以看到控制流程的最佳实践 我特别想知道如何发出关机命令。我在想一个全局布尔值,每个进程都会进行轮询 这也是在活动进程之间传递数据的好方法 我没有找到任何好的博客帖子,它们大多是how-tos全局布尔值的概念非常好,只是不能在进程之间共享。但您可以在每个子流程中保留该布尔值的副本 一种方法是与线程一起使用。诸如此类: from multiprocessing import Process, Pipe from threading import Thread Alive = True
我没有找到任何好的博客帖子,它们大多是how-tos全局布尔值的概念非常好,只是不能在进程之间共享。但您可以在每个子流程中保留该布尔值的副本 一种方法是与线程一起使用。诸如此类:
from multiprocessing import Process, Pipe
from threading import Thread
Alive = True
def listener_thread(conn):
global Alive
while True:
data = conn.recv()
if data == "kill":
Alive = False
break
def subprocess(conn):
t = Thread(target=listener_thread, args=(conn,))
t.start()
while Alive:
# do some stuff here
if __name__ == '__main__':
parent_conn, child_conn = Pipe()
p = Process(target=subprocess, args=(child_conn,))
p.start()
# do some stuff
parent_conn.send("kill")
p.join()
请注意,每个子流程都需要(父连接,子连接)
对。这是流程和子流程之间通信的标准方式
或者您可以使用数据库(我所说的数据库是指任何数据库,甚至是一个简单的文件)在进程之间共享数据。但是,您需要一个轮询线程来处理可能效率不高的问题
您还可以使用一些发布/订阅系统(这样您就不必担心轮询效率),如Redis,这可能是最好的,具体取决于您的需要
总的来说,流程越少共享越好。非常感谢!这让一切都清楚了,谢谢你花时间做这件事