【Python多进程库】一个函数让你设置CPU数和线程数

【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.git
sudo python setup.py install

“Talk is cheap, show me your performance.”

因为源代码才60行不到,所以,你自己去看完全不会有卡住的地方,这里简单粗暴地直接上测试代码:


如果你的程序是 不是IO密集型


def process_job(job):
    time.sleep(1)
    return job

jobs = [i for i in range(20)]

如果你的程序 IO密集型


def process_job(job):
    count = 100000000
    while count>0:
        count -= 1
    return job

jobs = [i for i in range(20)]

没有使用任何多线程处理的方法:


if __name__ == "__main__":
    result = []
    for job in jobs:
        result.append(process_job(job))

使用了python的线程池:


from concurrent import futures

if __name__ == "__main__":
    result = []
    thread_pool = futures.ThreadPoolExecutor(max_workers=10)
    result = thread_pool.map(process_job, jobs)

使用multicpu


from multicpu import multi_cpu

if __name__ == "__main__":
    result = multi_cpu(process_job, jobs, 10, 1)

效果:


FunctionNon-ThreadMulti-Thread(10)multicpu(10,1)multicpu(10,2)
IO146.42 (s)457.53 (s)16.34 (s)42.81 (s)
Non-IO20.02 (s)2.01 (s)2.02 (s)1.02 (s)

How Does it Work?


Feel free to read the source for a peek behind the scenes – it’s less than 60 lines of code.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值