Python基础题型实战02-排队进行核酸检测

序言

只有当你下定决心改变,才会有接下来的改变。
学会慢慢地稳定情绪,保持住自己的节奏,一起好好的生活,努力去追求更加美好的事物。

需求

第二题需求.jpg

实战

思路流程图绘制

2流程图.jpg

代码原理实现

import time
import queue
import threading

def worker(i):
    global numbers_1,numbers_2
    numbers_1 = 0
    numbers_2 = 0
    while True:
        item = q.get()
        try:
            # 偶数
            if (item % 2) == 0:
                # time.sleep(2)
                if (numbers_1 % 2)==0:
                    print("小红医生(代号%s)将一个群众<%s>检测完了!" % (i, item))
                    # 做完后发出任务完成信号,然后继续下一个任务
                    q.task_done()
                else:
                    time.sleep(2.5)
                    q.task_done()
                numbers_1 += 1
            else:
                # 奇数
                # 小明是小红的2倍
                print("小明医生(代号%s)将一个群众<%s>检测完了!" % (i, item))
                numbers_2 += 1
                # 做完后发出任务完成信号,然后继续下一个任务
                q.task_done()

        except TypeError:
            print("今天没有群众需要检测了;医生(代号%s),可以休息了。" % i)
            if i==1:
                print('医生(代号%s)今天完成了的群众数量为:%s'% (i, numbers_1))
            elif i==2:
                print('医生(代号%s)今天完成了的群众数量为:'% i, numbers_2)
            # 做完后发出任务完成信号,然后继续下一个任务
            q.task_done()
            break



if __name__ == '__main__':
    num_of_threads = 2
    # 模拟核酸检测群众
    source = [i for i in range(1, 30)]

    # 创建一个FIFO队列对象,不设置上限
    q = queue.Queue()
    # 创建一个线程池
    threads = []
    # 创建指定个数的工作线程,并讲他们放到线程池threads中
    for i in range(1, num_of_threads+1):
        t = threading.Thread(target=worker, args=(i,))
        threads.append(t)
        t.start()

    # 将任务源里的任务逐个放入队列
    for item in source:
        # 每隔0.5秒准备下一个要检测的群众
        time.sleep(0.5)
        q.put(item)

    # 阻塞队列直到队列里的任务都完成了
    q.join()
    print("-----统计小红医生、小明医生工作完成的情况-----")
    # 停止线程
    for i in range(num_of_threads):
        q.put(None)
    for t in threads:
        t.join()


在这个浮躁的时代;竟然还有人能坚持篇篇原创;

如果本文对你学习有所帮助-可以点赞👍+ 关注!将持续更新更多新的文章。

支持原创。感谢!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容