2016-02-26 22 views
5

爲了研究與未發佈的系統資源一些問題,我想在一個已經運行 python腳本力立即垃圾收集如何強制Python的垃圾回收上正在運行的腳本

這是否有可能,例如通過發送一些Python會理解爲運行gc的命令的信號;或者其他類似的方式?謝謝。

我在Linux服務器上運行Python 2.7。

+0

你能更具體嗎?就像一個API將信號發送給進程並告訴它執行某些操作(gc)?你想在什麼條件下執行它?手動,cron,當發生某些事件時,還有其他事情? –

+0

我正在尋找一個手動命令來針對特定的Python進程(即uwsgi)執行。 –

+0

@TkTech已經建議了信號模塊。我可以添加RabbitMQ或ZeroMQ,儘管您必須創建一個單獨的線程來偵聽信號。 [RabbitMQ](https://www.rabbitmq.com/)是一個非常簡單和直接。我個人更喜歡[ZeroMQ](http://zeromq.org/),因爲它有很大的靈活性,但如果您之前沒有經驗,它會更加困難。 –

回答

2

使用內置的signal模塊安裝信號處理程序,然後從您的自定義處理程序中調用gc.collect()

如果你對應用程序沒有控制權,你將不得不使用類似pyringe的東西,這將允許你插入任意的python。

0

您可以使用調試器附加到正在運行的python腳本並在其中發出任何命令,就像在交互式控制檯中一樣。我使用了PyCharm的調試器,但它們有很多。