退出Python解释器而不运行垃圾收集

max*_*max 3 python garbage-collection interrupt python-3.x

在我的程序结束时,没有真正需要发生的事情,CPython 3.2解释器花了将近2分钟进行垃圾收集.这是一个众所周知的问题.

幸运的是,在我的情况下,我不需要在程序结束之前进行任何垃圾收集.因此,我只需要找到一种在程序完成后退出程序的方法,而无需gc.collect()运行.

在Windows上按"CTRL + C"似乎是这样做的.我想我也可以找到python解释器的进程ID,并使用OS调用将其终止.

有没有办法使用纯Python(可能是异常或标准库调用)实现相同的效果,希望平台无关?

ick*_*fay 6

import os
os._exit(0)
Run Code Online (Sandbox Code Playgroud)

这是不鼓励的,因为析构函数可以执行一些有用的操作.如果您确定不需要运行这些析构函数,那么这应该可行.

  • @max:操作系统*应该能够执行系统资源的清理.你可能更想担心的是应用程序的东西.例如,如果您的应用程序尝试执行某种多步骤文件操作,并且您在中间将其剪切掉,则该文件可能不会处于一致状态. (2认同)
  • 哦,我刚刚在文档中读到“stdio”缓冲区不会被刷新。只要我意识到这一点,处理起来就很容易了。 (2认同)