iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python线程Event例子
  • 940
分享到

Python线程Event例子

线程例子Python 2023-01-31 01:01:52 940人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

需求1:Boss需要一个员工生产100个杯子,Boss一直等待员工生产完成之后方可 import threading import logging import time logging.basicConfig(level=logging

需求1:Boss需要一个员工生产100个杯子,Boss一直等待员工生产完成之后方可

import threading
import logging
import time

logging.basicConfig(level=logging.INFO)

def worker(event:threading.Event, count=10):
    logging.info("I'm working for U.")
    cups = []
    while True:
        logging.info('make 1')
        time.sleep(0.5)
        cups.append(1)
        if len(cups) >= count:
            event.set()
            break
    logging.info('I finished my job. cups={}'.fORMat(cups))

def boss(event:threading.Event):
    logging.info("I'm boss, waiting for U.")
    event.wait()
    logging.info("Good Job")

Event = threading.Event()
w = threading.Thread(target=worker, args=(Event, 100))
b = threading.Thread(target=boss, args=(Event, ))
w.start()
b.start()

需求2:使用threading Event实现类似Timer延迟执行的线程

思路:需要有 start和 cancel的功能(使用 Event  wait(),set(), 方法)
代码实现:
import threading
import datetime
import logging

logging.basicConfig(level=logging.INFO)

def add(x:int, y:int):
    logging.info(x + y)

class Timer(object):
    def __init__(self, interval, fn, *args, **kwargs):
        self.interval = interval
        self.fn = fn
        self.args = args
        self.kwargs = kwargs
        self.event = threading.Event()

    def start(self):
        threading.Thread(target=self.__run).start()

    def cancel(self):
        self.event.set()

    def __run(self):
        start = datetime.datetime.now()
        logging.info('Waiting')

        self.event.wait(self.interval)
        if not self.event.is_set():
        # 上面两行可以直接改写成 if not self.event.wait(self.interval):
            self.fn(*self.args, **self.kwargs)
        delta = (datetime.datetime.now() - start).total_seconds()
        logging.info('finished {}'.format(delta))
        self.event.set()

t = Timer(10, add, 4, 50)
t.start()
e = threading.Event()
e.wait(4)
t.cancel()

print("主线程完成")

--结束END--

本文标题: Python线程Event例子

本文链接: https://www.lsjlt.com/news/184250.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python线程Event例子
    需求1:Boss需要一个员工生产100个杯子,Boss一直等待员工生产完成之后方可 import threading import logging import time logging.basicConfig(level=logging...
    99+
    2023-01-31
    线程 例子 Python
  • python中Event实现线程间同步介绍
    前言: Event在python线程间同步是一种常用的方法,本博客以生产者线程和工作者线程为例说明Event在线程间进行10次同步的应用。 import threading from...
    99+
    2024-04-02
  • python中Event怎么实现线程间同步
    这篇文章主要介绍“python中Event怎么实现线程间同步”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python中Event怎么实现线程间同步”文章能帮助大家解决问题。前言:Event在pyt...
    99+
    2023-06-29
  • python怎么停止子线程
    在Python中,无法直接停止子线程。但可以通过设置一个标志位,在子线程中定期检查该标志位,以判断是否停止线程。以下是一个示例代码:...
    99+
    2023-09-04
    python
  • Python主线程销毁子线程过程是怎样的
    Python主线程销毁子线程过程是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在处理完成后,Python主线程将销毁线程,其实Python主线程的销毁与...
    99+
    2023-06-17
  • python中event事件应用举例
    import threading import time def producer(): print(u"chef:等人买包子") event.wait() event.clear() print("开始...
    99+
    2023-01-31
    事件 python event
  • Python主线程与子线程的区别是什么
    Python主线程与子线程的区别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python子线程在创建自身的线程状态对象后,会通过_PyGILState_NoteTh...
    99+
    2023-06-17
  • python子线程如何有序执行
    一、前情提要 最近在写一个项目,需要用到子线程,但是我们小学二年级就学过操作系统, 线程的执行是由系统的CPU调度算法所决定的,调度算法按照一系列的要求来从 就绪队列中 选择合适的线...
    99+
    2024-04-02
  • python线程及多线程实例讲解
    进程和线程一、进程进程是程序的分配资源的最小单元;一个程序可以有多个进程,但只有一个主进程;进程由程序、数据集、控制器三部分组成。二、线程线程是程序最小的执行单元;一个进程可以有多个线程,但是只有一个主线程;线程切换分为两种:一种是I/O切...
    99+
    2023-01-31
    线程 多线程 实例
  • python多线程----------主线程,子线程,任务讲解----拿下就是胜利
    这一篇博客主要介绍给分不清楚主线程.子线程的小可爱们 在之前的一篇博客中我简单的介绍了并发,并行 并发:是在时段的完成多个任务 ,但是每个时间点只有一个任务运行 而多线程就是这一个原理 非守护线程 代码: from threading im...
    99+
    2023-09-05
    开发语言 python
  • Python多线程编程实例
    Python多线程编程 发布者:lanyulei,转载请注明出处:http://www.fdevops.com/p=517 下面多线程模块threading的方法注释,均来自于百度贴吧"学点编程吧"。 Thread: 表示一个线程的执行对象...
    99+
    2023-01-31
    多线程 实例 Python
  • python argparse例子
    arg_1#!/usr/bin/python #coding=utf-8 import argparse def parse_args():     description = "usage: % prog[options]"     pa...
    99+
    2023-01-31
    例子 python argparse
  • Python的子线程和子进程是如何手动结束的?
    如何结束Python的子线程和子进程 结束子线程的方法: 这个是搬运其他大神的代码,鄙人也不知道原理,反正拿来主义,暂时没发现什么缺点,先用着再说。 import inspect...
    99+
    2024-04-02
  • Java父线程等待所有子线程退出的示例分析
    这篇文章主要介绍了Java父线程等待所有子线程退出的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。实例如下:static void testLoc...
    99+
    2023-05-30
    java
  • Java线程创建(卖票),线程同步(卖包子)的实现示例
    1.线程两种创建方式:new Thread(new Runnable() {}) 如下FileOutputStream源码中抛出异常,为了让写代码人自己写try catch异常提...
    99+
    2024-04-02
  • 子线程任务发生异常时主线程事务回滚示例过程
    目录一、提出问题二、主线程与子线程三、线程池四、异常的捕获五、事务的回滚一、提出问题 最近有一位朋友问了我这样一个问题,问题的截图如下: 这个问题问的相对比较笼统,我来稍微详细的描...
    99+
    2024-04-02
  • Python 多线程爬取案例
    目录前言一、多进程库(multiprocessing)二、多线程爬虫三、案例实操四、案例解析1、获取网页内容2、获取每一章链接3、获取每一章的正文并返回章节名和正文4、将每一章保存到...
    99+
    2024-04-02
  • Python多线程实例分析
    这篇文章主要介绍“Python多线程实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python多线程实例分析”文章能帮助大家解决问题。线程讲解  多线程类似于同时执行多个不同程序,多线程运行...
    99+
    2023-06-29
  • python+Tkinter+多线程的实例
    目录python+Tkinter+多线程tkinter与多线程问题总结python+Tkinter+多线程 界面和多线程一向是编程里比较难的地方,常见的做法一般是界面一个线程,后台新...
    99+
    2023-05-12
    python Tkinter多线程 python多线程 python Tkinter
  • 强行停止python子线程最佳方案
        子线程的强制性终止是我们实际应用时经常需要用到的,然而python官方并没有给出相关的函数来处理这种情况。网上找到一个挺合理的解决方案,这里分享给大家。import threading import time import ins...
    99+
    2023-01-31
    线程 方案 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作