python - 在使用 Python 的 Windows 中,如何终止我的进程?

标签 python windows winapi pywin32

编辑:看起来像是重复的,但我向你保证,它不是。我希望彻底终止当前正在运行的进程,而不是终止一个单独的进程。

问题是我正在终止的进程不是由子进程或 exec 产生的。它基本上是在试图自杀。

场景如下:程序在退出时进行清理,但有时这会花费太长时间。我确信我可以终止程序,因为退出的第一步保存了数据库。我该怎么做?

  • 不能使用 taskkill,因为它在某些 Windows 安装中不可用,例如家庭版 XP
  • tskill 也不起作用

  • win32api.TerminateProcess(handle, 0) 有效,但我担心它可能会导致内存泄漏,因为我没有机会关闭句柄(程序在之后立即停止调用 TerminateProcess)。注意:是的,我强制退出它所以肯定会有一些未释放的资源,但我想尽可能地减少它(因为我只会在花费无法忍受的时间时才这样做,为了更好的用户经验),但我不认为 python 会在强制退出时处理 gc。

我目前正在做最后一个,因为它很管用。我担心未释放的句柄。任何想法/建议将不胜感激!

最佳答案

win32api.TerminateProcess(handle, 0) works, but i'm concerned it may cause memory leaks because i won't have the opportunity to close the handle (program immediately stops after calling TerminateProcess). note: Yup, I am force quitting it so there are bound to be some unfreed resources, but I want to minimize this as much as possible (as I will only do it only if it is taking an unbearable amount of time, for better user experience) but i don't think python will handle gc if it's force-quit.

如果进程自行终止,那么您无需担心垃圾回收。操作系统会自动清理该进程使用的所有内存资源,因此您不必担心内存泄漏。内存泄漏是指进程正在运行并随着时间的推移使用越来越多的内存。

所以是的,以这种方式终止您的过程不是很“干净”,但不会有任何不良副作用。

关于python - 在使用 Python 的 Windows 中,如何终止我的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5113791/

相关文章:

windows - 服务 创建服务 - 将 SC_MANAGER_CREATE_SERVICE 分配给用户

python - 在 Django 产品中从 Python 2.6 升级到 Python 2.7

c++ - 如何使用 C++ 正确检查注册表项是否存在?

javascript - 如何使用 Angular 进行 HTTP 基本身份验证

c++ - 在 C++ 中,如何让用户在应用程序窗口外指定屏幕上的一个点 (X,Y)?

Python 极地时钟样图与 matplotlib

c++ - 在 C++ 中从 ComTypes.STGMEDIUM 获取 IStorage

c++ - FindFirstFile 和 FindNextFile 问题

python - 使用 Python 进行更快的解析

python - 如何使用beautifulsoup从网页中正确提取特殊字符?