6
07年03月
改写地一个python利用Queue多线程干活的脚本
贝贝爸 发表在 原创技术文章 |python用Queue多线程干活的脚本
- #!/usr/bin/env python
- import Queue
- import threading
- import time
- import random
- q=Queue.Queue(0)
- NUM_WORKERS = 3
- class MyThread(threading.Thread):
- """A worker thread."""
- def __init__(self, input, worktype):
- self._jobq = input
- self._work_type = worktype
- threading.Thread.__init__(self)
- def run(self):
- """
- Get a job and process it.
- Stop when there's no more jobs
- """
- while True:
- if self._jobq.qsize()>0:
- job = self._jobq.get()
- worktype=self._work_type
- self._process_job(job,worktype)
- else:
- break
- def _process_job(self, job,worktype):
- """
- Do useful work here.
- worktype: let this thread do different work
- 1,do list
- 2,do item
- 3,,,
- """
- doJob(job)
- def doJob(job):
- """
- do work function 1
- """
- time.sleep(random.random()*3)
- print "doing ",job
- if __name__=='__main__':
- print "begin..."
- #put some work to q
- for i in range(NUM_WORKERS*2):
- q.put(i)
- #print total job q's size
- print "job q'size",q.qsize()
- #start threads to work
- for x in range(NUM_WORKERS):
- MyThread(q,x).start()
- #if q is not empty, wait
- #while q.qsize()>0:
- # time.sleep(0.1)



