python resource 內存資源限制


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM