簡體   English   中英

Python:為特定函數調用設置內存限制

[英]Python: setting memory limit for a particular function call

在 Python 腳本中,我想為某個函數調用設置內存限制。 我查看了如何限制堆大小 但是,我不想限制整個正在運行的 Python 進程的內存——即在函數調用之前和之后設置內存限制。

有沒有辦法用給定的內存量進行函數調用,這樣內存限制就不會影響調用者?

不,這是不可能的。 Python 不會跟蹤哪些函數負責分配新內存,libc 也不會,因此無法僅通過單個函數來限制內存使用。

為了做到這一點,您必須修改 Python,以便您使用一個新函數來分配內存,該函數要求指定 Python 函數負責的內容,以便在該函數超出其限制時拒絕內存分配。

正如@JBernardo 所說,唯一的另一種方法確實是在內存有限的單獨進程中執行該函數。

至於沙箱的實現,已經有相對較好的測試實現。 有什么理由不能使用這些嗎? 特別是請參閱 PyPy 的沙盒 VMZope 沙盒

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM