| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import threading
- import time
- import queue
-
- q = queue.Queue(10)
-
- threadLock = threading.Lock()
-
-
- class myThread(threading.Thread):
- def __init__(self, threadID, name):
- threading.Thread.__init__(self)
- self.threadID = threadID
- self.name = name
- self.exitFlag = 0
-
- def run(self):
- while not self.exitFlag:
- threadLock.acquire()
- if not q.empty():
- id = q.get()
- print_time(self.name, id)
- threadLock.release()
- else:
- threadLock.release()
-
-
- def print_time(threadName, id):
- print ("%s:%s:%s"%(threadName,time.ctime(time.time()),id))
-
-
- # 创建3个线程
- threads = []
- for i in range(3):
- name = "Thread-%d" % i
- t = myThread(i, name)
- t.start()
- threads.append(t)
- print(threads)
-
- # 新增队列数据
- for i in range(10000):
- q_name = "Queue:%d" % i
- q.put(q_name)
- # 等待队列清空
- while not q.empty():
- pass
-
- # 也可以join方法,与上同效
- # q.join()
-
- # 通知线程,处理完之后关闭
- for t in threads:
- t.exitFlag = 1
-
- # 等待所有线程结束之后才退出
- for t in threads:
- t.join()
-
- print("Exiting Main Thread")
|