此刻,当我调用一个函数时,它将在另一个这样的脚本中打开一个PYQT5 Gui:
A.py
def startGui():
subprocess(["python", path/B.py], shell=True)
和B.py看起来像这样:
B.py
class MainWindow(QtWidgets.QMainWindow):
....
def main():
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
我的问题是,当我打开带有功能的Gui并关闭GUI窗口时,子进程会在后台继续进行。因为我不能再使用concurrenct.futures.ProcessPoolExecutor()。
您可以使用psutil按名称杀死进程。
def kill():
import psutil
for proc in psutil.process_iter(): # iterate over processes.
if proc.name == 'B.py': # Find the process to kill A or B?
print(proc.name())
print('killing process')
proc.kill()
在sys.exit调用之后添加函数
def main():
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
kill() # <------------- Here
if __name__ == '__main__':
main()