python 如果有导入numpy模块的import语句,会导致默认将多进程程序的每个进程都绑定到同一个CPU core上,

失去了多进程在多核CPU上的性能优越性,这和CPU affinity(CPU亲和性)有关,解决办法:

导入affinity包,执行:

affinity.set_process_affinity_mask(0,2**multiprocessing.cpu_count()-1)

以下是英文文档原文,供参考:

Python refuses to use multiple cores – solution

I was trying to get parallel Python to work and I noticed that if I run two Python scripts simultaneously – say, in two different terminals – they use the same core. Hence, I get no speedup from multiprocessing/parallel Python. After some searching around, I found out that in some circumstances importing numpy causes Python to stick all computations in one core. This is an issue with CPU affinity, and apparently it only happens for some mixtures of Numpy and BLAS libraries – other packages may cause the CPU affinity issue as well.

There’s a package called affinity (Linux only AFAIK) that lets you set and get CPU affinity. Download it, run python setup.py install, and run this in Python or ipython:

1
2
3
4
In [1]: import affinity
In [2]: affinity.get_process_affinity_mask(0)
Out[2]: 63

This is good: 63 is a bitmask corresponding to 111111 – meaning all 6 cores are available to Python. Now running this, I get:

1
2
3
4
In [4]: import numpy as np
In [5]: affinity.get_process_affinity_mask(0)
Out[5]: 1

So now only one core is available to Python. The solution is simply to set the CPU affinity appropriately after import numpy, for instance:

1
2
3
4
5
import numpy as np
import affinity
import multiprocessing
affinity.set_process_affinity_mask(0,2**multiprocessing.cpu_count()-1)

转载于:https://www.cnblogs.com/Arborday/p/9858108.html

python 导入numpy 导致多进程绑定同一个CPU问题解决方法相关推荐

  1. python安装numpy模块-python的numpy模块安装不成功简单解决方法总结

    为了画个图,被numpy这个模块的安装真的折腾疯了!!!一直装不上,花了几个小时,看了网上的很多教程.方法发现总结得不是很全,这里总结一下,防止大家再出现这个问题没有解决方法. Python的魅力之一 ...

  2. python numpy安装步骤-python的numpy模块安装不成功简单解决方法总结

    为了画个图,被numpy这个模块的安装真的折腾疯了!!!一直装不上,花了几个小时,看了网上的很多教程.方法发现总结得不是很全,这里总结一下,防止大家再出现这个问题没有解决方法. Python的魅力之一 ...

  3. [转载] python导入numpy函数库

    参考链接: Python中的NumPy 1(简介) 1.安装pip  去网站  https://raw.github.com/pypa/pip/master/contrib/get-pip.py  进 ...

  4. python 导入模型h20_【机器学习】模型融合方法概述

    我理解的Kaggle比赛中提高成绩主要有3个地方 特征工程 调参 模型融合 之前每次打比赛都只做了前两部分,最后的模型融合就是简单的加权平均,对于进阶的Stacking方法一直没尝试,这几天摸索了一下 ...

  5. apache httpd配置后启动失败或域名绑定无效等问题解决方法

    用命令 httpd -t 来测试httpd配置问题 查看版本用 -v 如httpd -v; mysql -V;  php -v 等 解决_default_ VirtualHost overlap on ...

  6. 网站证书过期导致WordPress后台无法登录问题解决方法

    记录一次因为网站ssl证书过期,导致wordpress后台不能登陆问题以及解决办法 因为在腾讯CDN的ssl证书过期忘记更换ssl证书导致woedpress后台页面样式丢失,https不受信任,网站c ...

  7. chrome80默认SameSite导致iframe无法获取cookie问题解决方法

    项目背景及问题定位 项目背景 A网站(假设为http://SameSite.a.com)作为iframe内嵌在B网站(假设为http://test.a.com).在B网站中加载A网站的时候,自动登录失 ...

  8. python pytorch爆显存,内存溢出问题解决方法(总结)RuntimeError: CUDA out of memory.

    问题描述 在运行python程序时,随运行时间增长,内存疯狂增加,直至运行内存爆满,出现以下错误: RuntimeError: CUDA out of memory. 解决方法: 1.在模型验证和测试 ...

  9. linux修改主机名后oracle em控制台起不来,更改计算机名后导致Oracle dbconsole无法启动问题解决方法...

    今天不知道哪根筋搭歪了,看着Oracle EM控制台的主机名WIN-LOSGI0TCOG0乱七八糟的很不爽,就把它给改了.然后Oracle EM就上不去了,Oracledbconsole服务起不来,我 ...

最新文章

  1. vscode中调试react
  2. LAN,城域网,广域网,国际互联网
  3. [算法]——归并排序(Merge Sort)
  4. java bigdecimal min_java
  5. Segmentation fault (core dumped) -llinux系统内存错误报错信息
  6. js 获取某iframe中document,浏览器兼容
  7. pkcs1转pkcs8 php,openssl RSA密钥格式PKCS1和PKCS8相互转换
  8. java 操作系统 模拟 daima_编写一个程序,利用Java语言模拟操作系统进程调度管理...
  9. java 读取manifest_使用JAVA从jar文件读取MANIFEST.MF文件
  10. 手写数字识别项目介绍
  11. Intellij IDEA设置系列(四):各种乱码解决方案
  12. MATLAB 2018a 安装
  13. QT高级编程技巧(二)-- 编写多线程和并发应用
  14. SOAOffice和iWebOffice、NTKO的比较及其优势(转)
  15. ADAS工程师的成长之路——ACC法规(ISO 15622-2018 — Adaptive cruise control systems)
  16. 牛逼,一个开源,高隐私,自架自用的聚合搜索引擎
  17. 只要两步,用Python将地址标记在地图上!
  18. 【2016浴雨沐风】(第一篇)
  19. DOM实现元素拖拽,滚轮事件和特效动画缓冲运动处理
  20. JAVA版本号的问题 Java版本号与JDK版本

热门文章

  1. Google 的开源技术protobuf 简介与例子
  2. 《妥协的完美主义—优秀产品经理的实践指南(卷一)》一2.4 分工常见的错误...
  3. tinyhttpd源码详解
  4. FFMPEG源码分析(二)
  5. db:migrate
  6. 免gre美国计算机硕士,美国硕士免GRE/GMAT的学校-计算机篇
  7. 仪表仪器信息管理C语言,仪器仪表管理系统C语言课程实习报告
  8. MySQL高级 - 锁 - MySQL对锁的支持
  9. zookeeper的名词复盘-集群角色
  10. BeanFactory作为 IoC 容器示例