需求是用 tkinter 制作的 gui 工具,点击 [开始] 后在异步函数里 while 循环,点击 [停止] 后让 while 停止

目前的问题是 asyncio.create_task 遇到 asyncio.sleep 就中断了

实际的项目中用 threading.Thread()解决了,但是不甘心还是想试试用异步解决,但还没找到解决的方法

就目前的体验来说,python 异步用起来的体验没有 node.js 来的舒服,限制挺多的

import asyncio

import time

import tkinter

from tkinter import ttk

class Window:

def __init__(self):

self.__do_while = False

root = tkinter.Tk()

root.minsize(200, 200)

frame = ttk.Frame()

frame.pack(fill=tkinter.BOTH)

ttk.Button(frame, text='开始', command=self.start).pack()

ttk.Button(frame, text='停止', command=self.stop).pack(pady=10)

root.mainloop()

def start(self):

print(time.time())

self.__do_while = True

async def go():

# 只 print 了一次就结束了

asyncio.create_task(self.exec())

# 界面卡住了

# await asyncio.create_task(self.exec())

# 界面卡住了

# await self.exec()

asyncio.run(go())

print(time.time())

def stop(self):

self.__do_while = False

async def exec(self):

i = 0

while self.__do_while:

print('exec', i)

i += 1

await asyncio.sleep(2)

if __name__ == "__main__":

Window()

python中3个while循环_Python3 里怎么让一个包含 while 循环的异步函数不断运行,而不阻塞正常的代码流程...相关推荐

  1. python中while continue的用法_Python3 循环语句while/for/break/continue用法

    介绍Python3中的循环,有while循环和for循环,循环控制有break,continue,也有else语句用来在循环一直执行完没有被break时执行. 工具/原料 Python3 方法/步骤 ...

  2. python中装饰器修复技术_python3之装饰器修复技术@wraps

    普通函数 def f(): """ 这是一个用来测试装饰器修复技术的函数 """ print("哈哈哈") if __n ...

  3. python中的继承与多态_Python3 与 C# 面向对象之~继承与多态

    2.继承               ¶ 2.1.单继承               ¶ 在OOP中,当我们定义一个Class的时候,可以从某个现有的Class继承 新的Class称为子类,而被继承的 ...

  4. python中fd是什么意思_python里fd是什么意思

    文件描述字(file descriptor,fd)是系统中用来唯一记录当前已经打开的文件的标识号,fd是一个整数. 除了file对象外,Python还提供对fd的操作,对fd的操作更加底层,fd和Py ...

  5. python中time是什么意思_python3时间中time是什么?怎么转换?

    对于时间如何使用似乎一直是人们不断追寻和探究的问题,不要等到错过最有活力的青春才后悔呀.在python中,也有时间需要我们去处理,相信大家对time不管是在学校学习的时候,还是在python的学习中都 ...

  6. python中遍历字典判断是否存在_Python基础之(判断,循环,列表,字典)

    一.python介绍 Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程.Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在 ...

  7. python中re是什么意思_python里的re是什么

    定义 正则表达式是一个特殊的字符序列,能方便的检查一个字符串是否与某种模式匹配.re模块使得python拥有全部的正则表达式功能. 用途 通过使用正则表达式,可以: 测试字符串内的模式.-- 例如,可 ...

  8. python中def什么时候用_Python3中def的使用方法是什么

    Python3中def的使用方法是什么 发布时间:2020-08-06 09:21:36 来源:亿速云 阅读:76 作者:小新 这篇文章将为大家详细讲解有关Python3中def的使用方法是什么,小编 ...

  9. python中花括号什么作用_Python3中小括号()、中括号[]、花括号{}的区别详解

    介绍 在Python语言中最常见的括号有三种,分别是:小括号().中括号[].花括号{}:其作用也不相同,分别用来代表不同的Python基本内置数据类型. 小括号() Python中的小括号(): 代 ...

最新文章

  1. Blender模块化建筑环境地形场景制作视频教程 Creating modular environments
  2. Galaxy生物信息分析平台的数据集对象清理
  3. 【Groovy】闭包 Closure ( 闭包类 Closure 简介 | this、owner、delegate 成员赋值及源码分析 )
  4. Linux 命令利用scp实现从服务器共享地址上传下载文件、文件夹实例演示,scp命令的参数详解
  5. boost::mpl::greater相关的测试程序
  6. 事物与持久化_揭开Redis面纱,发布订阅、事务、安全、持久化
  7. Docker最全教程之Python爬网实战(二十二)
  8. Mybatis There is no getter for property named 'XXX' in 'class java.lang.XXX
  9. FFMPEG基于内存的转码实例
  10. 如何在 Flink 1.9 中使用 Hive?
  11. [纯技术讨论]从12306谈海量事务高速处理系统
  12. 老兵戴辉:华为操作系统28年史
  13. 2019.8.29C++工作错误记录——Socket编程中出现ws2def.h文件“应输入标识符”或“重定义”问题(VS2015)
  14. 基于色彩调和的专题图自动生成系统
  15. Python - 如何用turtle库画一个微笑表情包
  16. EL表达式与Jstl标签库学习
  17. 11.2 RAC 系列-安装新主机,识别老存储-识别ASM磁盘
  18. PolSARpro v5.1.3 处理Sentinel-1A SLC数据
  19. 三维几何 --- 计算几何模板
  20. ES6字符串新增方法

热门文章

  1. Cisco访问控制列表
  2. 页面前端的水有多深?再议页面开发
  3. RSA加解密用途简介及java示例
  4. Android 7.1 App Shortcuts使用
  5. php3.2接口分页,thinkphp3.2.3分页完整实例
  6. jupyter 服务器 显示不完全,Jupyter中显示DataFrame的行显示不完全
  7. 【C#】图片处理(底片,黑白,锐化,柔化,浮雕,雾化)
  8. mysql优于oracle的地方_MYSQL转为ORACLE要注意的地方
  9. [转载]INNO Setup 使用笔记
  10. (转)Page.ClientScript.RegisterStartupScript 与Page.ClientScript.RegisterClientScriptBlock 之间的区别...