Python 是一門強大的編程語言,最近越來越多的開發人員開始關注多進程的并發性能。在使用 Python 多進程時,如果進程運行出現問題,你可能需要終止多個進程。下面我們就來看一下如何在 Python 中終止多進程。
import multiprocessing import os import signal def worker(): print('...worker start.') while True: pass def create_processes(): print('...creating processes.') jobs = [] for i in range(5): p = multiprocessing.Process(target=worker) p.start() jobs.append(p.pid) print('...created processes: {}'.format(jobs)) return jobs def kill_processes(jobs): print('...killing processes: {}'.format(jobs)) for pid in jobs: os.kill(pid, signal.SIGTERM) if __name__ == '__main__': jobs = create_processes() try: while True: pass except KeyboardInterrupt: print('...killing processes on interrupt.') kill_processes(jobs)
在上述示例代碼中,我們創建了一個 worker 函數,用于運行多進程。在 create_processes 函數中,我們通過 multiprocessing 模塊創建了 5 個進程,并將進程的 pid 存入到 jobs 列表中。在主進程中,我們通過一個 try-except 塊來監聽鍵盤終止操作,當檢測到用戶按下 Ctrl+C 時,我們會執行 kill_processes 函數來終止所有子進程。
這里我們使用了 Python 的 os 模塊和 signal 模塊,os.kill 函數用于發送終止信號,signal.SIGTERM 為終止信號。具體可以查看 Python 文檔了解詳細用法。
總結來說,在 Python 中終止多進程,需要使用鍵盤監聽等方式來檢測終止信號,再通過 os 模塊和 signal 模塊發送終止信號給子進程。
上一篇Python 模擬IP包
下一篇c 處理多層json