python3杀死进程_Python3实际上并没有杀死进程

我正在运行Python3的一些进程,但是它们没有被终止。这是一个问题的MCVE,它运行在Linux 16.04和python3.5上。我用QJoypad和Sublime3试过这个。在import subprocess

import time

p_joypad = subprocess.Popen(['qjoypad']) # also happens with sublime3

time.sleep(2) # wait until process starts

p_joypad.terminate() # try and kill it

p_joypad.kill() # try and kill it again

del p_joypad

os.kill(p_joypad.pid, signal.SIGTERM) # ask the OS to kill it

os.kill(p_joypad.pid, signal.SIGKILL)

# another attempt at calling and killing the process

p_joypad = subprocess.Popen(['qjoypad'], preexec_fn=os.setsid)

os.killpg(os.getpgid(p_joypad.pid), signal.SIGTERM)

input("Process is still open, baby") # hang up to verify this

最初我只有terminate()调用,但后来我尝试了kill()并从内存中清除对象。但是,这两个进程仍在运行。Qjoypad不允许调用其他实例(所以我需要关闭并重新启动Python3应用程序),这是非常有问题的。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Python中强制杀死进程,你可以使用`os`模块中的`getpid()`函数来获取当前进程的进程ID,然后使用`subprocess`模块调用系统命令来终止进程。在Windows系统中,你可以使用`taskkill.exe`命令。下面是一个示例代码: ``` import os import subprocess def kill_process_windows(pid): subprocess.call(['taskkill.exe', '/F', '/T', '/PID', str(pid)]) # 获取当前进程的进程ID current_pid = os.getpid() # 强制终止进程 kill_process_windows(current_pid) ``` 请注意,这段代码只适用于Windows系统。 此方法只能用于技术研究,不得将代码用于非法用途,如侵立删。并且,请确保你理解并遵守相关法律法规。 另外,如果你想通过端口号来杀死进程,你可以使用`subprocess`模块结合`netstat`命令来获取正在监听指定端口的进程ID,并使用`taskkill`命令来终止这些进程。下面是一个示例代码: ``` import subprocess import re def kill_by_port(port): # 使用netstat命令获取监听指定端口的进程信息 command = f'netstat -ano | findstr {port} | findstr LISTENING' result = subprocess.getoutput(command) # 使用正则表达式提取进程ID pids = re.findall('(\d+)\n', result) # 强制终止这些进程 for pid in set(pids): if int(pid) > 0: subprocess.run(f"taskkill /pid {pid} -f") # 使用指定的端口号来杀死进程 kill_by_port(8080) ``` 这段代码同样只适用于Windows系统。记得根据实际需求替换掉`8080`端口号。 请注意,在使用这些代码之前,确保你具备足够的权限来终止进程,并且也要确保你理解并遵守相关法律法规。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python windows系统下强制杀死运行中的多进程脚本](https://blog.csdn.net/qq_38154948/article/details/131306610)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python通过端口号杀死进程](https://blog.csdn.net/qq_43347021/article/details/131187718)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值