Created
March 28, 2016 05:05
-
-
Save raphaelsoul/26891aba918b4fa966ba to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/python | |
| # -*- coding: UTF-8 -*- | |
| import queue as 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(10) | |
| threads = [] | |
| threadID = 1 | |
| def main(): | |
| global threadList,nameList,queueLock,workQueue,threads,threadID | |
| # 创建新线程 | |
| for tName in threadList: | |
| thread = myThread(threadID, tName, workQueue) | |
| thread.start() | |
| threads.append(thread) | |
| threadID += 1 | |
| # 填充队列 | |
| queueLock.acquire() | |
| for word in nameList: | |
| workQueue.put(word) | |
| queueLock.release() | |
| # 等待队列清空 | |
| while not workQueue.empty(): | |
| pass | |
| # 通知线程是时候退出 | |
| exitFlag = 1 | |
| # 等待所有线程完成 | |
| for t in threads: | |
| t.join() | |
| print("Exiting Main Thread") | |
| if __name__ == '__main__': | |
| main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment