queue与threading

import queue
import threading
import time

"""
队列
queue.Queue(maxsize=0):   先进先出,无参数默认无大小
queue.LifoQueue(maxsize=0):   后进先出
queue.PriorityQueue(maxsize=0):   size最小的先出
queue.SimpleQueue:   先进先出且不支持task_done和join方法
队列的方法
q.qsize():   队列大小
q.empty():   队列是否为空
q.full():   队列是否为满
q.get_nowait():   等价于q.get(False)
q.put_nowait(item):   等价于q.put(item, False)
q.task_done():   防止任务阻塞
q.join():   阻塞到所有任务已完成,继续执行q.join后的代码
"""
q = queue.Queue()


def task(name):
    num = 0
    while True:
        q.put(num)
        print(f'{name}{num}出现')
        num += 1
        time.sleep(1)


def worker(name):
    while True:
        print(f'{name}{q.get()}')
        time.sleep(1)
        q.task_done()


t1 = threading.Thread(target=task, args=('任务',))
t2 = threading.Thread(target=task, args=('怪兽',))
t3 = threading.Thread(target=worker, args=('完成了任务',))
t4 = threading.Thread(target=worker, args=('击败了怪兽',))
t1.start()
t2.start()
t3.start()
t4.start()

E:\ex\venv\Scripts\python.exe E:/ex/main.py
任务0出现
怪兽0出现
完成了任务0
击败了怪兽0
击败了怪兽1
任务1出现
怪兽1出现
完成了任务1
任务2出现击败了怪兽2

怪兽2出现
完成了任务2
完成了任务3
怪兽3出现
任务3出现
击败了怪兽3
任务4出现
怪兽4出现
击败了怪兽4
完成了任务4
任务5出现
击败了怪兽5
怪兽5出现
完成了任务5

Process finished with exit code -1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值