python实现线程池,python线程池,python实现线程池原
python实现线程池,python线程池,python实现线程池原
python实现线程池原理:建立一个任务队列,然多个线程都从这个任务队列中取出任务然后执行,当然任务队列要加锁,详细请看代码```pythonimport threadingimport timeimport signalimport os
class task_info(object): def init(self): self.func = None self.parm0 = None self.parm1 = None self.parm2 = None
class task_list(object): def init(self): self.tl = [] self.mutex = threading.Lock() self.sem = threading.Semaphore(0)
def append(self, ti): self.mutex.acquire() self.tl.append(ti) self.mutex.release() self.sem.release()def fetch(self): self.sem.acquire() self.mutex.acquire() ti = self.tl.pop(0) self.mutex.release() return ti
class thrd(threading.Thread): def init(self, tl): threading.Thread.init(self) self.tl = tl
def run(self): while True: tsk = self.tl.fetch() tsk.func(tsk.parm0, tsk.parm1, tsk.parm2)
class thrd_pool(object): def init(self, thd_count, tl): self.thds = []
for i in range(thd_count): self.thds.append(thrd(tl))def run(self): for thd in self.thds: thd.start()
def func(parm0=None, parm1=None, parm2=None): print 'count:%s, thrd_name:%s'%(str(parm0), threading.currentThread().getName())
def cleanup(signo, stkframe): print ('Oops! Got signal %s', signo)
os._exit(0)
if name == 'main':
signal.signal(signal.SIGINT, cleanup)signal.signal(signal.SIGQUIT, cleanup)signal.signal(signal.SIGTERM, cleanup)tl = task_list()tp = thrd_pool(6, tl)tp.run()count = 0while True: ti = task_info() ti.parm0 = count ti.func = func tl.append(ti) count += 1 time.sleep(2)pass
```
相关内容
- 遗传算法的神经网络python实现代码,神经网络python,遗传
- python之花瓣美女下载,python花瓣美女,作者:vpoet日期:大
- Python 发送带附件的email,pythonemail,None
- python图片小爬虫,,import re i
- python给图片右上角加上红色的数字,,from PIL imp
- python改变图片尺寸,,from PIL imp
- python programming exercise facemove,pythonfacemove,from graphic
- 一个Python备份脚本,Python备份脚本,编写一个Python脚本
- 自己实现的2048,自己实现2048,# _*_utf-8_*
- 用Python配置JDK环境,Python配置JDK环境,#!usr\bin\en
评论关闭