!/usr/bin/env python
-- coding:utf-8 --
Author:Jarry
'''
可重復(fù)利用的線程
'''
from threading import Thread
from queue import Queue
import time
import random
class MyThread(Thread):
def init(self):
Thread.init(self) #繼承父類的方法
self.queue = Queue() #實(shí)例化隊(duì)列
self.start() #創(chuàng)建就開(kāi)始啟動(dòng)線程(實(shí)例化后),線程啟動(dòng)后 調(diào)用run方法,啟動(dòng)后 沒(méi)有 數(shù)據(jù)會(huì)阻塞.
start() 調(diào)用run 源來(lái)父類的方法.
def run(self):
while True: #循環(huán)取出任務(wù),執(zhí)行任務(wù)
fun,args,kwargs =self.queue.get() #獲取隊(duì)列中的任務(wù)
fun(*args,**kwargs) #運(yùn)行任務(wù)
self.queue.task_done() #發(fā)送任務(wù)完成信號(hào)
def task(info):
print(info)
time.sleep(random.randint(1, 3))
if name == 'main':
t = MyThread() #實(shí)例化一個(gè)線程
for i in range(3):
t.queue.put((task,(i, ),{}))
t.queue.join() #阻塞,queue的計(jì)數(shù)器為0的時(shí)候就解阻塞。。