Kivy 异步任务

如果要进行一些非常耗时的操作(例如:爬虫等),那么页面就会在这里卡住,而系统就会以为这个软件无响应,并提示关闭,可以说明用户体验极差,因此我们在此处引入异步操作。

        在py中引入事件调节器,并在处理具体业务逻辑的异步方法async def pulse里让程序休眠两分钟。

pythonProject6\MRWord\asynico_task\asynico_insert_date.py

import asyncio
import threading
import logging
from kivy.event import EventDispatcher
class EventLoopWorker(EventDispatcher):

    # 定义唯一事件
    __events__ = ('on_pulse',)

    def __init__(self, file_path, **kwargs):
        super().__init__(**kwargs)
        # 制定目标
        self._thread = threading.Thread(target=self._run_loop)
        self._thread.daemon = True
        self.loop = None
        self._pulse = None
        self._pulse_task = None
        self.src = file_path

    def _run_loop(self):
        self.loop = asyncio.get_event_loop_policy().new_event_loop()
        asyncio.set_event_loop(self.loop)
        self._restart_pulse()
        self.loop.run_forever()

    def start(self):
        self._thread.start()

    async def pulse(self):
        """ 处理具体业务逻辑 """
        import time
        logging.info("Upload is ready, filepath is %s" % self.src)
        # 休眠两分钟
        time.sleep(120)
        logging.info("Upload shutdown")
        self.__init__(self.src)

    def _restart_pulse(self):
        """ 启动或重置任务 """
        if self._pulse_task is not None:
            self._pulse_task.cancel()
        self._pulse_task = self.loop.create_task(self.pulse())

    def on_pulse(self, *_):
        """ EventDispatcher 事件必须添加的方法 """
        pass
0  events = (‘on_pulse’,) 是什么作用,可以删除吗

在这个代码中,__events__ = ('on_pulse',) 是一个类变量,它定义了该类所支持的事件。在这个例子中,EventLoopWorker 类支持一个名为 on_pulse 的事件。

这个类变量的作用是为了方便其他代码使用该类时能够知道可以触发哪些事件。通过定义 __events__ 变量,其他开发者可以清楚地知道该类支持哪些事件,并可以根据需要进行相应的处理。

如果你不需要使用 on_pulse 事件,你可以删除 __events__ = ('on_pulse',) 这行代码。但是请注意,如果其他代码依赖于该事件,删除这行代码可能会导致其他部分的功能出现问题。

1  _pulse 和_pulse_task  是什么

在这个EventLoopWorker类中,_pulse_pulse_task都是实例属性。其中_pulse是一个标记,用于指示工作线程是否应该停止执行任务并退出。而_pulse_task则是定时任务,用于触发on_pulse事件。当_pulse为True时,工作线程会在下一次循环时退出。

在此之前,需要说明一下EventDispatcher是什么。EventDispatcher是一个事件调度器,可以用来注册、分发和处理事件。EventLoopWorker继承了EventDispatcher,并定义了自己的唯一事件on_pulse。在_run_loop方法中,每隔一段时间就会触发on_pulse事件,这个事件会被注册的回调函数所处理。

src是传入的参数,表示工作线程需要处理的目标文件路径。

2  asyncio 是什么

asyncio是Python的标准库之一,它是一种基于协程的异步IO编程库。通过使用asyncio可以方便地编写高效的异步IO程序,避免了多线程或多进程编程的复杂性和开销。asyncio提供了事件循环、任务、协程、回调、异步IO等功能,可以用于编写高效的网络应用、Web框架、爬虫等。

在上述代码中,asyncio.get_event_loop_policy()获取事件循环的策略,并且创建了一个新的事件循环loop,接着将新的事件循环设置为当前的事件循环,最后启动了事件循环。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/595588.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vulnhub靶场之FunBox-2

一.环境搭建 1.靶场描述 Boot2Root ! This can be a real life scenario if rockies becomes admins. Easy going in round about 15 mins. Bit more, if you are find and stuck in the rabbit-hole first. This VM is created/tested with Virtualbox. Maybe it works with…

C#编程模式之外观模式

创作背景:给位伙伴,五一小长假结束,我们继续对C#编程之路进行探索。本文将继续编程模式的研究,主要介绍外观模式。外观模式也称为门面模式,是一种结构型设计模式,它的目的是为子系统中的一组接口提供一个统…

【隧道篇 / WAN优化】(7.4) ❀ 01. 启动WAN优化 ❀ FortiGate 防火墙

【简介】几乎所有的人都知道,防火墙自带的硬盘是用来保存日志,以方便在出现问题时能找到原因。但是很少的人知道,防火墙自带的硬盘其实还有另一个功能,那就是用于WAN优化。 防火墙自带的硬盘 在FortiGate防火墙A、B、C、D系列&…

oracle 8i系统检查

oracle 8i系统检查 set echo on spool d:\bk\1.txt select sysdate from dual; --版本信息 select * from v$version; --安装的产品 col PARAMETER for a50; col value for a10; select * from v$option order by 2; --用户信息 set linesize 100 set pagesize 100 COL USE…

景源畅信:抖音运营做什么工作内容?

在如今这个信息爆炸的时代,抖音已经成为了人们生活中不可或缺的一部分。无论是消磨时间、获取信息还是展示自我,抖音都扮演着重要的角色。那么,作为抖音运营,他们需要做些什么呢? 一、内容策划与制作 抖音运营的首要任务就是内容…

爬虫Python库Requests

一、介绍 Requests 是一个强大的 Python 库,用于发送 HTTP 请求。它使得与 RESTful API 进行交互变得非常简单。Requests 可以通过 GET、POST、PUT、DELETE 等方法发送各种类型的请求,并且支持自定义 HTTP 头、请求参数、数据、cookies 等。 使用 Requ…

MCM箱模型实践技术应用与O3形成途径、生成潜势、敏感性分析

目前,大气臭氧污染成为我国“十四五”期间亟待解决的环境问题。臭氧污染不仅对气候有重要影响,而且对人体健康、植物生长均有严重损害。为了高效、精准地治理区域大气臭氧污染,需要了解臭氧生成的主要途径及其前体物。OBM箱模型可用于模拟光化…

武汉星起航:跨境电商领域国际竞争力卓越,引领行业再上新台阶

在全球化浪潮的推动下,跨境电商行业日益成为各国经济交流与合作的重要桥梁。武汉星起航电子商务有限公司,作为跨境电商领域的佼佼者,凭借其深厚的行业经验和前瞻性的战略视野,在国际市场上展现出强大的竞争力,为行业的…

优化理论复习——(二)

本篇主要介绍一下LP问题及其相关的解法和示例,主要是记住相关的方法和结论即可,不要求证明。 方法主要是单纯形法,同时对于初始基可行解确定方面使用了大M法和二阶段法。主体都是关于单纯形法的。 首先认识一下线性规划的一般问题形式&#x…

报错,java: 程序包sun.misc不存在

错误描述 down下来一个项目,编译的时候报错,提示sun.misc包不存在,通过百度得知,原来这是jdk8中的jar包,在后来的版本中被移除了(我用的jdk11,没有这个包) 结局方法 1.更换jdk版本&…

知识库工具:付费的HelpLook AI知识库比免费的牵牛易帮好在哪里

在知识管理的领域中,选择合适的知识库工具对于企业来说很重要。市面上有很多知识库产品,有付费的和免费的,但是还是有很多企业会选择使用付费的,而不是免费的。这是为什么呢?这就是今天要探讨的问题,下面就…

vs配置cplex12.10

1.创建c空项目 2.修改运行环境 为release以及x64 3.创建cpp文件 4.鼠标右键点击项目中的属性 5.点击c/c,点击第一项常规,配置附加库目录 5.添加文件索引,主要用于把路径导进来 6.这一步要添加的目录与你安装的cplex的目录有关系 F:\program…

idea2023.2.5的控制台动态配置当前环境

一、idea2023.2.5的控制台动态配置当前环境 1.1、idea版本 1.2、配置方式 1.2.1、方式一 1.2.2、方式二 1.3、参考 https://blog.csdn.net/xiaoheihai666/article/details/127757658

举个栗子!Minitab 技巧(8):用 PLS 偏最小二乘分析大豆脂肪影响因素

在上一个 🌰 中,我们用 Minitab 最小二乘法验证了两个变量(单位桶数与运输时间)之间是否存在某种关系。那么,在更复杂的场景中,如何验证一组预测变量和一个或多个连续响应变量之间的关系? 假设…

Pandas入门篇(三)-------数据可视化篇2(pandas-plot篇)

目录 概述一、格式1. 生成pandas.plotting对象来生成图表2. 调用plot()函数来生成图表3.支持的图表类型 二、单变量绘图常用图表1. 柱状图(bar)使用场景代码实现 2. 折线图(line)(默认即为折线图)适用场景代…

体育老师工资高吗,奖金有吗

教师的薪资水平与多种因素相关,包括教育经验、工作地点、学校类型以及个人的教学成果等。在讨论体育教师的工资问题时,不能仅仅关注数字,更应了解教育价值和个人发展。 初中体育教师的工资水平受多种因素影响。根据网络统计的数据&#xff0c…

[Spring Cloud] (6)gateway整体加解密

文章目录 简述整体效果后端增加配置nacos增加配置GlobalConfig 添加请求整体解密拦截器DecryptionFilter添加响应整体解密拦截器EncryptionFilter 前端请求拦截器添加整体加密逻辑请求头中添加sessionId 响应拦截器添加整体解密逻辑 简述 本文网关gateway,微服务&a…

阅读欣赏推荐之(七)——纪录片《一根绳子有多长》

《一根绳子有多长》是英国广播公司(BBC)在2009年出品的纪录片,这部纪录片以一跟绳子作为主角,通过运用现代科技手段,结合历史学、文化学、物理学等多个领域的知识,对绳子进行了全方位的研究。在古代&#x…

诺基亚贝尔探访上海斯歌,共探创新合作新机遇

近日,上海斯歌K2 BPM迎来重要客户考察交流活动。来自诺基亚贝尔的首席数字官刘少勇一行莅临了上海斯歌K2 BPM 的武汉研发中心,并对上海斯歌在BPM业务流程管理领域的研发成果及交付能力给予了高度肯定。 此次活动不仅加深了双方的战略合作,也为…

flask 前后台文件多张图片api;streamlit、gradio多图片页面展示

1、flask 前后台文件多张图片api send_file 传递zip: send_file(zip_data, mimetype‘application/zip’, as_attachmentTrue, download_name‘images.zip’) from flask import Flask, Response, request,send_file from PIL import Image import torch import i…
最新文章