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