import Queue
import threading
import time
exitFlag=0
class myThread(threading.Thread):
def __init__(self, threadID, name,q):
threading.Thread.__init__(self)
self.threadID=threadID
self.name=name
self.q=q
def run(self):
print ("Starting "+self.name)
process_data(self.name, self.q)
print ("Exiting "+self.name)
def process_data(threadName, q):
while not exitFlag:
queueLock.acquire()
if not workQueue.empty():
data=q.get()
queueLock.release()
print ("%s processing %s"%(threadName, data))
else:
queueLock.release()
time.sleep(1)
threadList=["Thread-1", "Thread-2", "Thread-3"]
nameList=["One","Two","Three","Four","Five"]
queueLock=threading.Lock()
workQueue=Queue.Queue()
threads=[]
threadID=1
#create new threads
for tName in threadList:
thread=myThread(threadID, tName, workQueue)
thread.start()
threads.append(thread)
threadID+=1
#Fill the queue
queueLock.acquire()
for word in nameList:
workQueue.put(word)
queueLock.release()
#wait for queue to empty
while not workQueue.empty():
pass
#notify threads it's time to exit
exitFlag=1
#wait for all threads to complete
for t in threads:
t.join()
print("Exiting Main Thread")
'Python' 카테고리의 다른 글
fileUpload.py (0) | 2015.04.13 |
---|---|
randomGenerator.py (0) | 2015.04.02 |
threadEx.py (0) | 2015.03.05 |
cookie.py (0) | 2015.03.05 |
fileReadline.py (0) | 2015.03.05 |