python 進程池的使用

來源:互聯網
上載者:User

標籤:roc   int   sync   blog   pool   instance   pass   range   span   

python的線程無法很好的利用到多cpu的功能,所以大家都比較推薦多進程

下面是進程池的用法,我這裡是清洗redis的到期內容

close和join一定要做,否則會佔用記憶體

import multiprocessing

def process_redis(time_range):
pass # 這裡不詳細寫了

def clear_timeout_redis(): while 1: try: p_pool = multiprocessing.Pool(processes=6) # processes 預設是cpu個數 addTime = time.time() hash_field = addTime // 60 * 60 - 660 ikeys = r.keys("instance_*") # r是redis的pool for ikey in ikeys: time_range = ikey.split("_")[1] if int(time_range) < hash_field: p_pool.apply_async(process_redis, (time_range, )) # 這裡是非同步任務和普通起進程用法一樣 except: logging.error(traceback.format_exc()) p_pool.close() p_pool.join() # 記得要close(),join() time.sleep(0)

python 進程池的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.