python实现异步操作

方法一

from threading import Thread
from time import sleep


def async_call(func):
    def wrapper(*args, **kwargs):
        thr = Thread(target=func, args=args, kwargs=kwargs)
        thr.start()
    return wrapper

@async_call
def test(ms):
    print("print", ms)
    sleep(ms)
    print("print again", ms)

if __name__ == "__main__":
    for i in range(10):
        test(10 - i)

方法一

import threading
import asyncio


async def hello(ms):
    print("Hello world!", ms)
    await asyncio.sleep(ms)
    print("Hello world again!", ms)

# 获取EventLoop
loop = asyncio.get_event_loop()
tasks = [hello(10), hello(5)]
# 执行coroutine
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是Python实现异步操作函数def wsw(),并实现按钮A的点击响应来控制函数wsw的执行: ```python import asyncio async def wsw(): while True: print("异步操作函数wsw正在执行...") await asyncio.sleep(1) # 等待1秒 async def on_button_A_clicked(): global task if task and not task.done(): # 如果task正在运行中 task.cancel() # 停止task的执行 task = None print("停止异步操作函数wsw") else: task = asyncio.create_task(wsw()) # 创建task并启动异步操作函数wsw print("启动异步操作函数wsw") task = None ``` 如上代码所示,我们利用Python的asyncio模块来异步执行函数wsw()。它会每隔一秒钟打印一条信息,来模拟一个长时间运行的异步操作。 接下来,我们定义一个on_button_A_clicked()函数,它会在按钮A被点击时被调用。如果异步操作函数wsw正在运行中,就停止它的执行;否则,就启动它。 最后,我们定义了一个全局的task变量,用来存储异步操作函数wsw的执行任务。在on_button_A_clicked()函数中,我们先判断task是否存在且还没有完成(即正在执行中),如果是,就通过task.cancel()来停止它的执行。如果task不存在或者已经完成,就通过asyncio.create_task()来创建一个新的task,并异步执行函数wsw()。 以上是完整的Python代码实现,你可以将它加入到你的其他应用程序中,来实现异步操作函数的控制。当你点击按钮A时,异步操作函数wsw就会开始/停止执行,从而实现了一定程度上的控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值