自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

限制你的Python程序所能使用的內(nèi)存

開發(fā) 后端
如果程序開發(fā)不當(dāng),可能會出現(xiàn)占用過多內(nèi)存的情況。特別是在Docker里面,如果Python程序占用太多內(nèi)存,可能會導(dǎo)致Docker容器死掉。

 [[376039]]

如果程序開發(fā)不當(dāng),可能會出現(xiàn)占用過多內(nèi)存的情況。特別是在Docker里面,如果Python程序占用太多內(nèi)存,可能會導(dǎo)致Docker容器死掉。

為了限制Python程序所能使用的最大內(nèi)存,我們可以使用Python自帶的resource模塊。

首先獲取系統(tǒng)默認(rèn)的內(nèi)存soft上限和hard上限:

  1. import resource 
  2. soft, hard = resource.getrlimit(resource.RLIMIT_AS) 

其中的resource.RLIMIT_AS實(shí)際上就是數(shù)字5,表示內(nèi)存資源。而soft限制是一個可以調(diào)節(jié)的內(nèi)存使用上限,hard是一個一旦設(shè)定就很難動態(tài)調(diào)整的內(nèi)存使用量上限。

在我的電腦上運(yùn)行效果如下圖所示:

一開始soft和hard的值是一樣的。并且它們的單位不是比特。而是比比特還小的單位。我的電腦是8GB內(nèi)存,而8 * 1024 ^ 6 正好約等于這里的hard和soft的值。

接下來,設(shè)置當(dāng)前運(yùn)行的這個Python程序能夠使用的最大內(nèi)存:

  1. resource.setrlimit(resource.RLIMIT_AS, (最大上限, hard)) 

其中最大上限是一個整數(shù)。假設(shè)我想限制當(dāng)前程序最多可以使用500MB的內(nèi)存,那么這里的最大上限可以設(shè)置為:

  1. 0.5 * 1024 ^ 6 = 576460752303423488 

所以設(shè)置為:

  1. resource.setrlimit(resource.RLIMIT_AS, (576460752303423488, hard)) 

那么當(dāng)前Python程序使用的內(nèi)存超過500MB以后,程序就會拋出MemoryError。

最后,這些代碼只能在Linux系統(tǒng)上正常工作。Windows和Mac上可能會有問題。

本文轉(zhuǎn)載自微信公眾號「未聞Code」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系未聞Code公眾號。

 

責(zé)任編輯:武曉燕 來源: 未聞Code
相關(guān)推薦

2021-01-14 22:23:16

Python開發(fā)內(nèi)存

2021-03-29 09:10:23

Python內(nèi)存inux

2012-10-08 15:59:38

數(shù)據(jù)結(jié)構(gòu)

2012-10-10 10:13:22

數(shù)據(jù)結(jié)構(gòu)

2012-10-18 10:40:46

數(shù)據(jù)結(jié)構(gòu)

2012-10-10 10:30:18

數(shù)據(jù)結(jié)構(gòu)

2012-10-09 10:09:19

數(shù)據(jù)結(jié)構(gòu)

2012-10-08 14:52:56

數(shù)據(jù)結(jié)構(gòu)

2020-02-09 17:23:17

Python數(shù)據(jù)字典

2020-06-17 14:10:01

Python內(nèi)存程序

2024-08-07 08:40:46

2010-11-08 10:07:23

SQL Server內(nèi)

2024-08-02 14:52:00

2025-04-15 00:00:00

2020-06-23 09:48:09

Python開發(fā)內(nèi)存

2022-09-21 18:06:10

Python內(nèi)存管理

2009-12-01 11:19:02

路由器IP限制

2012-10-16 09:52:27

數(shù)據(jù)結(jié)構(gòu)

2011-08-03 10:39:56

2020-07-23 14:15:42

Cython的Python代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號