定时器
让程序指定时间后进行执行,和延时有什么区别呢?感觉主要可以在定时器中实现递归,来进行任务的完成,更加高级。
import threading
import time
def run():
print('dingshiqiqidongle')
print(threading.current_thread())#获取正在执行的线程
timer = threading.Timer(5,run)#进行一个递归调用执行
timer.start()
if __name__ == '__main__':
t1 = threading.Timer(5,function=run)
t1.start()
while True:
time.sleep(10)#定时器是否是线程的一个验证。
print('zhuxiancheng')
队列
主要是队列得存储,主要分为三类,先入先出,后入先出,自定义进行输出顺序
import queue
# q = queue.Queue(maxsize=3)#先入先出
q = queue.LifoQueue(maxsize=3)#后入先出
q.put(1)
q.put(2)
q.put(3)
print(q.get())
print(q.get())
print(q.get())
z = queue.PriorityQueue(maxsize=3) # 自主排序原则,你让谁大谁先
z.put((1, 'nihao1'))
z.put((10, 'nihao10')) # 进行队列值得输入
print(z.full())
z.put((2, 'nihao2'))
print(z.full()) # 判断队列是否满了
print(z.qsize()) # 输出队列中还有几个值
print(z.get())
print(z.empty())
print(z.get())
print(z.get())
print(z.empty()) # 判断队列中是否为空
print(z.qsize())
队列得一个实际应用案例
import queue
import threading
import time
q = queue.Queue(maxsize=10)#队列的初始化
def put_in():
count = 1
while True:
q.put(f'视频{count}')#存队列
print(f'UP主录制了视频{count}')
count +=1
time.sleep(1)
def get_out(name):
while True:
print(f'{name}霸占了{q.get()}')#取出值
time.sleep(1)
if __name__ == '__main__':
p = threading.Thread(target=put_in)
p.start()
g = threading.Thread(target=get_out,args=('小宝',))#小白和小宝基本上是一对一的关系
g.start()
g1 = threading.Thread(target=get_out, args=('小bai',))
g1.start()