控制python进程的好方法

2024-04-26 21:01:36 发布

您现在位置:Python中文网/ 问答频道 /正文

在哪里可以看到控制流程的最佳实践。你知道吗

我特别想知道如何发出关机命令。我在想一个全局布尔值,每个进程轮询

也是在活动进程之间传递数据的好方法。你知道吗

我没有找到任何好的博客文章,他们大多是如何做


Tags: 方法命令进程文章流程全局关机传递数据
1条回答
网友
1楼 · 发布于 2024-04-26 21:01:36

全局布尔值的概念非常好,只是不能在进程之间共享它。但您可以在每个子进程中保留该布尔值的副本。你知道吗

一种方法是将pipes and/or queues与线程一起使用。类似于:

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()

注意,每个子进程都需要一个(parent_conn, child_conn)对。这是进程和子进程之间通信的标准方式。你知道吗

或者可以使用数据库(我所说的数据库是指任何数据库,甚至是一个简单的文件)在进程之间共享数据。然而,您将需要一个轮询线程,这可能不是有效的。你知道吗

你不需要像Redis那样担心哪个sub-pub系统的效率。你知道吗

一般来说,流程共享越少越好。你知道吗

相关问题 更多 >