簡體   English   中英

將subprocess.Popen與python一起使用時如何結束子進程?

[英]How to end the sub process when using subprocess.Popen with python?

我使用一個腳本來運行兩個腳本。 像這樣的代碼:

import subprocess

subprocess.Popen("python a.py", shell=True)
subprocess.Popen("python b.py", shell=True)

但是如果我結束主腳本,則a.py和b.py的子進程仍在運行。 怎么解決呢?

添加:

a.py和b.py是兩個服務器腳本。 當我使用ctrl + c結束主腳本時,兩個服務器都沒有結束。那么,當我結束主腳本時如何結束所有進程?

通過殺死進程。

import subprocess

p1 = subprocess.Popen("python a.py", shell=True)
p2 = subprocess.Popen("python b.py", shell=True)

# ... do things ...

p1.kill()
p2.kill()

您還可以使用atexit模塊自動執行此操作:

import subprocess
import atexit

p1 = subprocess.Popen("python a.py", shell=True)
p2 = subprocess.Popen("python b.py", shell=True)
atexit.register(p1.kill)  # register for killing
atexit.register(p2.kill)

# ... do things ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM