python threadpool

线程池threadpool

threadpool可以控制线程的数量。

一个简单的例子

#coding=utf8
import threadpool
import time,random

def hello(str):
    time.sleep(2)
    return str

def print_result(requests,result):
    print "the result is %s %r"%(requests.requestID,result)

data=[i for i in range(24)]
print data

poolsize=5

pool=threadpool.ThreadPool(poolsize)
requests=threadpool.makeRequests(hello,data,print_result)
[pool.putRequest(req) for req in requests]
pool.wait()

具体使用应该看借口文档

makeRequests(callable,args_list,callback=None,exc_callback=None)

    创建多个计算请求,并允许有不同的参数。

    参数列表中的每一个元素是两个元素的元组,分别是位置参数列表和关键字参数字典。

class ThreadPool

    线程池类,发布工作请求并收集结果。

    __init__(self,num_workers,q_size)

        构造函数,设置线程池工作线程数量和最大任务队列长度。 num_workers 是初始化时的线程数量。如果 q_size>0 则会限制工作队列的长度,并且在工作队列满时阻塞继续插入工作请求的任务。

    createWorkers(self,num_workers)

        增加工作线程数量。

    dismissWorkers(self,num_workers)

        减少工作线程数量。

    pool(self,block)

        处理队列中的新结果。也就是循环的调用各个线程结果中的回调和错误回调。不过,当请求队列为空时会抛出 NoResultPending 异常,以表示所有的结果都处理完了。这个特点对于依赖线程执行结果继续加入请求队列的方式不太适合。

    putRequest(self,request,block=True,timeout=0)

        加入一个任务请求到工作队列。

    wait(self)

        等待执行结果,直到所有任务完成。

class WorkerThread

    工作者线程,供ThreadPool内部使用,不必关注。其自定义方法也只有一个。

class WorkRequest

    任务请求类。

    __init__(self,callable,args=None,kwds=None,requestID=None,callback=None,exc_callback=None)

        创建一个工作请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值