在使用Python的Windows中,如何杀死我的进程?

编辑:看起来像重复,但我向你保证,这不是。 我期望干净地杀死当前正在运行的进程,而不是杀死一个单独的进程。

问题是我杀的过程不是由subprocess或执行程序产生的。 这基本上是为了自杀

这里的情况是:程序会在退出时进行清理,但是有时这会花费太长时间。 我确定我可以终止程序,因为退出的第一步保存了数据库。 我怎么去做这个?

我现在正在做最后一个,因为它只是工作。 我关心的是不一致的句柄。 任何想法/build议将非常感激!

win32api.TerminateProcess(句柄,0)的作品,但我担心它可能会导致内存泄漏,因为我不会有机会关闭句柄(程序立即停止后调用TerminateProcess)。 注意:是的,我强制退出,所以肯定会有一些不确定的资源,但是我希望尽可能地减少这种情况(因为我只会在无法承受的时间内才能做到这一点,为了更好的用户经验),但我不认为python会处理gc,如果它是强制退出。

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

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

如果我理解你的问题,你正试图让程序关闭。 这通常用sys.exit()完成 。

TerminateProcess和taskkill / f不释放资源,将导致内存泄漏。 这是终止进程的MS报价:{…终止进程不会导致子进程被终止。 终止进程不一定会从系统中删除进程对象。 当进程的最后一个句柄关闭时,进程对象被删除。 …} MS大量使用COM和DCOM,它共享操作系统不支持的资源句柄和资源,无法跟踪。 如果你不打算经常重启,那么应该使用ExitProcess。 这允许一个进程正确释放它使用的资源。 Linux没有这个问题,因为它不使用COM或DCOM。