2013-08-30 146 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行为...