zoukankan      html  css  js  c++  java
  • 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  
  • 相关阅读:
    IDEA2019破解版安装
    Docker (一)安装与基本命令
    js导出PDF
    python入门笔记一安装
    微信内关闭当前页面
    微信一些网页
    内网穿透工具:钉钉HTTP内网穿透使用详解
    html生成二维码,qr
    IDEA无法正常启动(打不开&报错)
    微信测试号
  • 原文地址:https://www.cnblogs.com/domestique/p/7718510.html
Copyright © 2011-2022 走看看