因为最近在看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
还有就是我发现在linux上多进程和多线程系统内核调度的还是很平均的所以一般不会用到这些,只是今天好奇就看了下.
by:pako
email:zealzpc@gmail.com
分享到:
相关推荐
Java-Thread-Affinity,将Java线程绑定到给定的内核.zip
Python的线程在多核情况下,由于GIL的存在,运行效率会比单核情况下还低,这个时候,可以通过设置运行Python代码的进程所在的CPU以提高线程的性能,达到和单核处理器时一致的性能。该代码从 ...
lua-affinity 是一个 linux 上用于控制CPU亲缘性的Lua模块。 更多细节,请查看sample.lua。 API: mask,err=affinity.getaffinity(pid) 获取pid相关的进程的亲缘性掩码. mask,err=affinity.setaffinity(pid,...
Laravel开发-affinity-integration 亲和力集成系统。使用关联API执行基本功能
Php-affinity 通过设置cpu亲和性,可以将进程绑定到一个cpu核心上。一般在如下场景我们可能会希望修改进程的cpu亲和性: 频繁的并行运算 线程可伸缩性测试(通过增加cpu核心数量模拟线性扩展) 运行时间敏感的,...
Java-Thread-Affinity:将Java线程绑定到给定的内核
CPU-Control software will handle the CPU-affinity for multicore-systems CPU-Control software will handle the CPU-affinity for multicore-systems. Instead of running each process on both CPUs you can ...
纳米固体电亲和与热稳定的相关性,孙长庆,Yong Shi,Correlation between the thermal stability and electro-affinity of a nanosolid has been explored from the perspective of surface and interface bonding....
进化亲和力传播(EAP)是一种进化聚类方法,它试图对在多个时间点收集的数据进行聚类,同时考虑到潜在的动态并保持时间平滑性。EAP的主要独特功能是:EAP自动确定每个时间步长的群集数。通过依赖因素图中引入的某些...
AutoML用于预测蛋白质-蛋白质复合物的结合亲和力 ... 为了更好地渲染jupyter笔记本: ://nbviewer.jupyter.org/github/Et9797/binding-affinity-prediction/blob/main/binding-affinity-prediction.ipynb
for a given IRQ source. It's a bitmask of allowed CPUs. It's not allowedto turn
CPU affinity reverse-map support for Embedded Linux.
Affinity Propagation聚类算法的扩展及改进研究,陈新泉,,当前在有限区域内分布的稀疏不均的、具有一定分布结构的海量数据点集的聚类分析是一个尚未圆满解决的难题,针对Affinity Propagation (AP
Clusters-and-Affinity:关于度量和相似度
可以进行中断绑定指定的cpu,提高网卡收包效率 把下面“eth1” 修改成对应的网卡名称 irq=$(cat /proc/interrupts | grep eth1 | cut -d':' -f 1); echo $irq for i in $irq ; do sudo cat /proc/irq/$i/smp_...
Affinity-小但最新的用户组 UI套件 MacOS / iOS Apple设计资源-带有可下载UI套件的Apple官方网站(使用Photoshop文件) iOS 11设计资源Apple San Francisco字体-Windows用户(使用7-zip打开以安装字体) 安卓...
High quantum efficiency of depth grade doping negative-electron-affinity GaN photocathode
earning Data Mining with Python - Second Edition by Robert Layton English | 4 May 2017 | ASIN: B01MRP7VFV | 358 Pages | AZW3 | 2.85 MB Key Features Use a wide variety of Python libraries for ...
The increase in the affinity data available in DT knowledge-bases allows the use of advanced learning techniques such as deep learning architectures in the prediction of binding affinities....
CUDA_VISIBLE_DEVICES=1,2,3,4,5,6 python exp/train_affinity.py -dc 2 -dr 0 -l 0 -lw 2 -b 6 --volume-total 20000 --volume-save 5000 -lr 0.0001 -g 6 -c 10 -o tmp/ -betas 0.99,0.999 -lr_decay inv,0.0001,...