python多线程

定时器

让程序指定时间后进行执行,和延时有什么区别呢?感觉主要可以在定时器中实现递归,来进行任务的完成,更加高级。

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()

线程池

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值