gpt4 book ai didi

python - 选择 python popen process.kill() 或 process.terminate() 的更优雅的方法

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:22 25 4
gpt4 key购买 nike

我有一个小函数,旨在杀死或终止子进程及其子进程。

我试图以更优雅的方式编写它,而不是重复 if、else 两次。

def kill_process(cls, process, kill_type):
process = psutil.Process(process.pid)

for proc in process.children(recursive=True):

if kill_type== 'terminate':

proc.terminate()

else:

proc.kill()


if kill_type== 'terminate':

process.terminate()

else:

process.kill()

最佳答案

如果目标是不使用 if/else 语句两次,您可以使用辅助方法:

def kill_or_terminate(proc, kill_type):
if kill_type == 'terminate':
proc.terminate()
else:
proc.kill()

def kill_process(cls, process, kill_type):
process = psutil.Process(process.pid)

for proc in process.children(recursive=True):
kill_or_terminate(proc, kill_type)

kill_or_terminate(process, kill_type)

或者将父进程添加到子进程列表的末尾,这样所有进程都在一个可迭代中:

def kill_process(cls, process, kill_type):
process = psutil.Process(process.pid)
for proc in process.children(recursive=True) + [process]:
if kill_type == 'terminate':
proc.terminate()
else:
proc.kill()

关于python - 选择 python popen process.kill() 或 process.terminate() 的更优雅的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48468274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com