python 綁定進程在某個cpu上執行 affinity


multiprocessing 進程在多cpu機器上的利用率.然后寫了個腳本在i5(4核),起了4個進程,發現只有一顆cpu跑的比較高,然后覺得不是很舒服. 

指定某個cpu去執行一個進程,python有個第三方的庫http://pypi.python.org/pypi/affinity/0.1.0,基本都是調用了系統的affinity mask的API. 

在windows上裝了試了下,貌似還真有點用. 

看了下代碼,一共也就3個方法,用起來很方便. 
_get_handle_for_pid(pid, ro=True) 
通過一個pid獲取進程 
get_process_affinity_mask(pid) 
通過pid獲取這個進程當前的affinity mask相關掩碼 ,返回一個長整形('2l',就是在用2這個cpu) 
set_process_affinity_mask(pid, value) 
綁定pid這個進程到value所指的這個cpu上去(set_process_affinity_mask(3516, 1),就是用1這個cpu去執行pid為3516這個進程) 

 

>>>import multiprocessing, time, signal  
>>>import affinity  
#我用multiprocessing創建了個進程  
>>>p = multiprocessing.Process(target=time.sleep, args=(1000,))  
>>>p.start()  
>>>pid=p.pid  
>>>print pid  
5604  
#先看了下5604這個進程用的是那個cpu  
>>>affinity.get_process_affinity_mask(pid)  
3L  
#將5604這個進程用2這個cpu跑  
>>>affinity.set_process_affinity_mask(pid, 2L)  
3L  
>>>affinity.get_process_affinity_mask(pid)  
2L  

 


免責聲明!

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



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