python 绑定进程在某个cpu上执行 affinity
Posted 关灯吃面
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于python 绑定进程在某个cpu上执行 affinity的主要内容,如果未能解决你的问题,请参考以下文章
linux shell 查看进程运行或绑定的cpu和绑定执行进程到特定cpu上执行的方法
为什么要把进程/线程绑定到特定cpu核上运行?(cpu core id coreIdx)opdevsdk_sys_bindThreadCoreId()