日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中uss的用法_使用不同内存ussag管理Python多进程进程进程

發布時間:2025/3/20 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中uss的用法_使用不同内存ussag管理Python多进程进程进程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我認為試圖捕捉并從OOM錯誤中恢復是非常困難的,如果不是不可能的話。你需要一個線程或進程來持續監控內存使用情況,當它檢測到內存使用量太高時,會……確切地說是什么?終止正在處理任務的進程?嘗試暫停它(如果可能的話;它可能不取決于你的任務在做什么)。即使這樣,暫停也不會釋放任何記憶。當任務安全時,你必須釋放內存并重新啟動任務,這意味著你必須重新排隊,決定何時安全,等等

與其嘗試檢測并從中恢復過來,我建議盡量避免它。創建兩個隊列和兩個池。一個隊列/池用于高內存任務,另一個隊列/池用于低內存任務。高內存池中只有一個進程,因此它只能并發運行一個任務,這樣可以節省內存。低內存隊列將有multiprocessing.cpu_count() - 1個進程,允許您在兩個池中保持cpu飽和。在

這種方法的一個潛在問題是,如果您耗盡了高內存隊列,同時仍有低內存任務等待處理,那么您將浪費一個CPU。您可以以非阻塞的方式(或使用超時)處理高內存隊列中的這種消耗,以便在準備使用任務時,如果高內存隊列為空,則可以獲取低內存任務。然后當您完成處理后,再次檢查高內存隊列。在

像這樣:import multiprocessing

# hi_q and lo_q are placeholders for whatever library you're using to consume from RabbitMQ

def high_mem_consume():

while True:

task = hi_q.consume(timeout=2)

if not task:

lo_q.consume(timeout=2)

if task:

process_task(task)

def low_mem_consume():

while True:

task = lo_q.consume() # Blocks forever

process_task(task)

if __name__ == "__main__":

hi_pool = multiprocessing.Pool(1)

lo_pool = multiprocessing.Pool(multiprocessing.cpu_count() - 1)

hi_pool.apply_async(high_mem_consume)

lo_pool.apply_async(lo_mem_consume)

總結

以上是生活随笔為你收集整理的python中uss的用法_使用不同内存ussag管理Python多进程进程进程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。