【Python多进程库】一个函数让你设置CPU数和线程数
来源:互联网 发布:美国大学网络教育 编辑:程序博客网 时间:2024/05/29 10:21
【Python多进程库】一个函数让你设置CPU数和线程数
Tags: Python 多线程 多进程
博客虽水,然亦博主之苦劳也。
如对代码有兴趣的请移步我的 Github.
https://github.com/cyh24/multicpu如需转载,请附上本文链接,不甚感激!
http://blog.csdn.net/cyh_24/article/details/49314709
multicpu
使用multicpu之后,你需要一个函数,就可以定义你程序运行时所需的CPU数量和每个cpu占用的线程数量:
result = multi_cpu(process_job, jobs, cpu_num, thread_num)
cpu_num: 使用的CPU数量.
thread_num: 每个cpu占用的线程数量.
重点是,代码只有60行不到,你可以很轻松的阅读源码。
安装指南
multicpu 可以直接使用pip就可以安装了
pip install multicpu
或者,你也可以用git clone
下载源代码,然后用setup.py
安装:
git clone git@github.com:cyh24/multicpu.gitsudo python setup.py install
“Talk is cheap, show me your performance.”
因为源代码才60行不到,所以,你自己去看完全不会有卡住的地方,这里简单粗暴地直接上测试代码:
如果你的程序是 不是IO密集型
def process_job(job): time.sleep(1) return jobjobs = [i for i in range(20)]
如果你的程序 IO密集型
def process_job(job): count = 100000000 while count>0: count -= 1 return jobjobs = [i for i in range(20)]
没有使用任何多线程处理的方法:
if __name__ == "__main__": result = [] for job in jobs: result.append(process_job(job))
使用了python的线程池:
from concurrent import futuresif __name__ == "__main__": result = [] thread_pool = futures.ThreadPoolExecutor(max_workers=10) result = thread_pool.map(process_job, jobs)
使用multicpu:
from multicpu import multi_cpuif __name__ == "__main__": result = multi_cpu(process_job, jobs, 10, 1)
效果:
How Does it Work?
Feel free to read the source for a peek behind the scenes – it’s less than 60 lines of code.
3 1
- 【Python多进程库】一个函数让你设置CPU数和线程数
- 线程池大小设置,CPU的核心数、线程数的关系和区别,同步与堵塞完全是两码事
- CPU的核心数、线程数的关系和区别
- CPU的核心数、线程数的关系和区别
- 控制一个高消耗CPU的线程数控制方案
- 最大进程 线程数
- 查看物理CPU/内核数/线程数
- 设置Linux最大打开文件数和进程数
- 设置IE进程数
- nginx 进程数设置
- cpu 最佳线程数和QPS以及RT
- WebLogic10设置线程数
- 教你如何修改和还原CPU核心数
- Linux下查看cpu数、内核数、线程数命令
- ubuntu下cpu数,核心数,线程数的关系
- ubuntu下cpu数,核心数,线程数的关系
- Linux下cpu数,核心数,线程数的关系
- ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数。 worke
- django 静态图片加载记录
- php手机号中间几位替换成星号
- n后问题
- C++基类与派生类的转换
- Servlet 的配置
- 【Python多进程库】一个函数让你设置CPU数和线程数
- JAVA将Excel中的报表导出为图片格式(二)实现思路
- ajax跨域解决方案
- 聊聊并发-Java中的Copy-On-Write容器
- UVA 400 UNIX ls
- 如何思考问题
- C#学习之 调用 AForge.NET Framework 启动摄像头
- JSP/Servlet-----web.xml配置
- MD5学习