python resource 內存資源限制
python resource 內存資源限制
1. 測試腳本
mac 中 無效
linux 中 有效
import os import time import psutil import resource import sys try: print('---------') print(os.getpid()) print(resource.getrlimit(resource.RLIMIT_AS)) print('---------') # 錯誤 1024 ** 4 -> 1B # 正確 unit B resource.setrlimit(resource.RLIMIT_AS, (0.57 * 1024 ** 3, 0.57 * 1024 ** 3)) print('~~~~~~~~~') print(resource.getrlimit(resource.RLIMIT_AS)) print('~~~~~~~~~') print('memory used {}'.format(round(psutil.Process(os.getpid()).memory_full_info().rss, 2))) nums = [] for n in range(10 ** 8): # nums.append(n) nums.append("a") print("ok") print(sys.getsizeof(nums)) print(len(nums)) print('memory used {}'.format(round(psutil.Process(os.getpid()).memory_full_info().rss, 2))) print('==========') print(resource.getrlimit(resource.RLIMIT_AS)) print('==========') finally: print('111111') print(sys.getsizeof(nums)) print(len(nums)) print(resource.getrlimit(resource.RLIMIT_AS)) print('memory used {}'.format(round(psutil.Process(os.getpid()).memory_full_info().rss, 2))) time.sleep(60) print('memory used {}'.format(round(psutil.Process(os.getpid()).memory_full_info().rss, 2)))
2. 測試結果
| resource rss 設置 |
進程內存大小【KB】 |
| 1* 1024 ** 3 |
792408 |
| 0.8* 1024 ** 3 |
757432 |
| 0.6 * 1024 ** 3 |
535492 |
| 0.57 * 1024 ** 3 |
535136 |
| 0.5 * 1024 ** 3 |
477052 |
| 0.47 * 1024 ** 3 |
425316 |
| 0.4 * 1024 ** 3 |
338324 |
3. 結論
- resource.setrlimit(resource.RLIMIT_AS, (soft, hard))
soft, hard 單位是B
- 如若設置運行內存為1GB, 則resource soft,hard 應略大於該值 1* 1024 ** 3
