2013-08-30 143 views
1

我想創建幾個進程並通過Python多處理模塊運行, 我用下面的代碼來確定每個正在提交的進程的進程名稱,但我注意到所有進程都是在同一處理器上運行至少應名字看起來相同。Python多進程處理進程名稱

在做的工作開始在其它處理器上運行? 如何識別proceesor命名其運行?

from multiprocessing import Process 
import platform 

def process1(): 
    print 'process_1 processor =',platform.processor() 

def process2(): 
    print 'process_2 processor =',platform.processor() 

def main(): 
    print 'Main processor =',platform.processor() 
    processlist = [] 
    p1 = Process(target = process1) 
    p1.start() 
    processlist.append(p1) 

    p2 = Process(target = process2) 
    p2.start() 
    processlist.append(p2) 

    for i in processlist: 
     i.join() 

if __name__ == '__main__': 
    main() 

OUtput 
Main processor = Intel64 Family 6 Model 37 Stepping 2, GenuineIntel 
process_2 processor = Intel64 Family 6 Model 37 Stepping 2, GenuineIntel 
process_1 processor = Intel64 Family 6 Model 37 Stepping 2, GenuineIntel 

回答

2

沒有辦法確定使用此庫運行的進程的CPU名稱,但可以確定與進程相關的CPU CORE編號。

import psutil,os 
self_process = psutil.Process(os.getpid()) 
self_process.get_cpu_affinity() 
# [0,1] - i have 2 core cpu and process can load both cores 
self_process.set_cpu_affinity([1]) 
# now this process can load only one core #1 

你可以在主進程的PID,並設置CPU內核產卵後運行。 唐`知道能約多CPU行爲...