1
在哪裏可以看到控制進程的最佳實踐。控制python進程的好方法
具體而言,我想知道如何給關機命令。我正在考慮一個全局布爾值,每個進程輪詢
同時也是一種很好的方式來傳遞數據往返於活動進程之間和之間。
我還沒有發現任何好的博客文章,他們大多是如何渡
在哪裏可以看到控制進程的最佳實踐。控制python進程的好方法
具體而言,我想知道如何給關機命令。我正在考慮一個全局布爾值,每個進程輪詢
同時也是一種很好的方式來傳遞數據往返於活動進程之間和之間。
我還沒有發現任何好的博客文章,他們大多是如何渡
全球布爾的想法是相當不錯的,但你不能在進程間共享。但是您可以在每個子流程中保留該布爾值的副本。
一種方法是將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)
對。這是流程和子流程之間溝通的標準方式。或者你可以使用數據庫(和數據庫我的意思是任何數據庫,即使是一個簡單的文件)在進程之間共享數據。但是,您將需要一個輪詢線程,可能不是有效的。
你也可以使用一些pub/sub系統(這樣你就不用擔心輪詢效率),就像Redis一樣,根據你的需要可能是最好的。
一般來說,流程越少越好。
奇特非常感謝你!從字面上看,一切都很清楚,感謝您抽出寶貴時間 –