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

如果学习上有遇到问题,加/:yiyi990805(备注:阿里云tony)即可。

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

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

支持原创。感谢!

相关文章
|
3天前
|
存储 前端开发 机器人
Python网络数据抓取(6):Scrapy 实战
Python网络数据抓取(6):Scrapy 实战
21 2
|
3天前
|
机器学习/深度学习 Python
【Python实战】——神经网络识别手写数字(三)
【Python实战】——神经网络识别手写数字
|
3天前
|
机器学习/深度学习 数据可视化 Python
【Python实战】——神经网络识别手写数字(二)
【Python实战】——神经网络识别手写数字(三)
|
3天前
|
存储 缓存 监控
利用Python和Flask构建RESTful API的实战指南
在当今的软件开发中,RESTful API已成为前后端分离架构中的核心组件。本文将带你走进实战,通过Python的Flask框架,一步步构建出高效、安全的RESTful API。我们将从项目初始化、路由设置、数据验证、错误处理到API文档生成,全方位地探讨如何构建RESTful API,并给出一些实用的最佳实践和优化建议。
|
3天前
|
Python
Python自动化办公实战案例:文件整理与邮件发送
Python自动化办公实战案例:文件整理与邮件发送
8 0
|
3天前
|
存储 人工智能 测试技术
python自动化测试实战 —— CSDN的Web页面自动化测试
python自动化测试实战 —— CSDN的Web页面自动化测试
194 0
|
3天前
|
Web App开发 设计模式 测试技术
python自动化测试实战 —— 自动化测试框架的实例
python自动化测试实战 —— 自动化测试框架的实例
15 0
|
3天前
|
监控 数据可视化 IDE
python自动化测试实战 —— 单元测试框架
python自动化测试实战 —— 单元测试框架
19 2
|
3天前
|
Web App开发 JavaScript 测试技术
python自动化测试实战 —— WebDriver API的使用
python自动化测试实战 —— WebDriver API的使用
8 1
|
3天前
|
机器学习/深度学习 数据可视化 Python
【Python实战】——神经网络识别手写数字(一)
【Python实战】——神经网络识别手写数字