3
在我的程序結束時,CPython 3.2解釋器花費了將近2分鐘的時間進行垃圾回收。這是一個known issue。退出Python解釋器而不運行垃圾回收
幸運的是,就我而言,我不需要做任何垃圾收集,直到程序結束。因此,我只需要找到一種方法在完成時退出程序,而不會給gc.collect()
一個運行的機會。
在Windows上按'CTRL + C'似乎可以做到。我想我也可以找到python解釋器的進程ID,並使用OS調用來殺死它。
有沒有一種方法可以使用純Python(可能是異常或標準庫調用)實現相同的效果,希望平臺無關?
這是完美的。使用這些東西時應該注意哪些類型的東西?我希望文件句柄和網絡連接仍然會被操作系統釋放,即使它們的析構函數不運行? – max
@max:操作系統*應該*能夠清理系統資源。你可能想要更擔心的是應用程序。例如,如果您的應用程序試圖執行某種多步驟文件操作,並且在中間將其切斷,則文件可能不會處於一致狀態。 – icktoofay
當您使用'_exit'時,使用'atexit'註冊的例程(無論是您或您使用的庫)都不會運行。 –