多线程(threading——join)

join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,

才可以接着往下执行,那么在调用这个线程时可以使用被调用线程的join方法。join([timeout]) 里面的参数时可选的,代表线程运行的最大时

间,即如果超过这个时间,不管这个此线程有没有执行完毕都会被回收,然后主线程或函数都会接着执行的,如果线程执行时间小于参数表示的

时间,则接着执行,不用一定要等待到参数表示的时间。

 import threading
 import time
 #创建两个测试的变量
 num_1 = 0
 num_2 = 0
 def te_1():
     global num_1
     #将num_1加到 3
     for i in range(3):
         num_1 += 1
         print("我是num_1: " + str(num_1))
         time.sleep(1)
 def te_2():
     global num_2
     #将num_2加到 3
     for i in range(3):
         num_2 += 1
         print("我是num_2: " + str(num_2))
         time.sleep(1)
 t1 = threading.Thread(target=te_1)
 t1.start()
 t2 = threading.Thread(target=te_2)
 #join为等待线程,等待t1线程执行完,再执行t2线程
 t1.join()
 t2.start()

多线程(threading——setDeamon)

setDaemon()方法。主线程A中,创建了子线程B,并且在主线程A中调用了B.setDaemon(),这个的意思是,把主线程A设置为守护线程,这

时候,要是主线程A执行结束了,就不管子线程B是否完成,一并和主线程A退出.这就是setDaemon方法的含义,这基本和join是相反的。此外,还有

个要特别注意的:必须在start() 方法调用之前设置,如果不设置为守护线程,程序会被无限挂起,只有等待了所有线程结束它才结束。

 import threading
 import time
 #创建两个测试的变量
 num_1 = 0
 num_2 = 0
 def te_1():
     global num_1
     #将num_1加到 3
     for i in range(3):
         num_1 += 1
         print("我是num_1: " + str(num_1))
         time.sleep(1)
 def te_2():
     global num_2
     #将num_2加到 5
     for i in range(5):
         num_2 += 1
         print("我是num_2: " + str(num_2))
         time.sleep(1)
 t1 = threading.Thread(target=te_1)
 t1.start()
 t2 = threading.Thread(target=te_2)
 #守护进程t2,当t1执行完后不再去执行t2
 t2.setDaemon(t1)
 t2.start()

下面是如何解决time.sleep,其实非常简单,只需要创建一个线程让他自己执行就可以了

 """小白随笔,大佬勿喷"""
 '''tkinter解决time延迟问题'''
 import tkinter as tk
 import time
 import threading
 #初始化窗口
 window = tk.Tk()
 #窗口名称
 window.title("My Window")
 #窗口大小,是 x 不是 *
 window.geometry("400x400")
 #不能改变窗口的大小
 window.resizable(width=False,height=False)
 def count():
     label = tk.Label(window,bg='green')
     label.pack()
     button.pack()
     while True:
         try:
             #获取当前时间
             date = time.strftime("%Y-%m-%d\n%H:%M:%S")
             label.config(text=date)
             #更新窗口
             window.update()
             time.sleep(1)
         except:
             break
 #创建按钮,只是为了测试sleep与按钮之间是否存在延迟
 button = tk.Button(window,text='Hit_me',width=20)
 #创建线程,如果函数里面有参数,args=()
 t = threading.Thread(target=count)
 #开启线程
 t.start()
 #循环窗口
 window.mainloop()

技术有限,不会录制gif图

解决python tkinter 与 sleep 延迟问题的更多相关文章

  1. 剖析和解决Python中网络粘包的正确姿势

    目录 1.粘包及其成因 1.1.粘包产生 1.2.粘包产生的原因 2.尝试解决粘包 2.1.指定数据包的长度 2.2.固定数据包的长度 2.3.用函数实现多次调用发送数据 3.解决粘包问题的正确姿势 ...

  2. paip.日志中文编码原理问题本质解决python

    paip.日志中文编码原理问题本质解决python 默认的python日志编码仅仅gbk...保存utf8字符错误..输出到个eric5的控制台十默认好像十unicode的,要是有没显示出来的字符,大 ...

  3. (原)怎样解决python dataframe loc,iloc循环处理速度很慢的问题

    怎样解决python dataframe loc,iloc循环处理速度很慢的问题 1.问题说明 最近用DataFrame做大数据 处理,发现处理速度特别慢,追究原因,发现是循环处理时,loc,iloc ...

  4. 解决 python 读取文件乱码问题(UnicodeDecodeError)

    解决 python 读取文件乱码问题(UnicodeDecodeError) 确定你的文件的编码,下面的代码将以'utf-8'为例,否则会忽略编码错误导致输出乱码 解决方案一 with open(r' ...

  5. Python 解决Python安装包时提示Unable to find vcvarsall.bat的问题

    解决Python安装包时提示Unable to find vcvarsall.bat的问题   by:授客 QQ:1033553122 问题 Python安装包时,提示Unable to find v ...

  6. Python Tkinter基础控件入门实例

    分享一个Python Tkinter基础控件用法的入门例子,包括窗口的显示.显示内置图片.弹出窗口.菜单等. 例子,Python Tkinter基础控件的用法 # -*- coding: utf-8 ...

  7. Python Tkinter 学习成果:点歌软件music

    笔者工作业余时间也没什么爱好,社交圈子也小,主要娱乐就是背着自己带电瓶的卖唱音响到住地附近找个人多的位置唱唱KtV. 硬件上点歌就用笔记本电脑,歌曲都是网上下载的mkv格式的含有两个音轨的视频.因此点 ...

  8. Python Tkinter Entry(文本框)

    Python学习记录--关于Tkinter Entry(文本框)的选项.方法说明,以及一些示例. 属性(Options) background(bg) borderwidth(bd) cursor e ...

  9. python tkinter Listbox用法

    python tkinter组件的Listbox的用法,见下面代码的演示: from tkinter import * root=Tk() v=StringVar() #Listbox与变量绑定' l ...

随机推荐

  1. Source Code Review

    1.berfore we talking abnout the Source Code review,here's what we want to know about the most popula ...

  2. sass创建web项目环境步骤

    1)npm创建web前端项目环境步骤 1.新建文件夹,在该文件下进入cmd控制台2.输入命令 npm init 回车3.name:名字只支持小写,不支持大写,将大写的名字改为小写即可4.version ...

  3. 如何导出chrome已安装的拓展程序

    如何导出chrome已安装的拓展程序 已安装的chrome插件可以在浏览区中输入*chrome://extensions*便可以查看插件列表. 对于windows系统来说,这些插件对应的目录为: C: ...

  4. php获取两个时间戳之间相隔多少天多少小时多少分多少秒

    /** * 返回两个时间的相距时间,*年*月*日*时*分*秒 * @param int $one_time 时间一 * @param int $two_time 时间二 * @param int $r ...

  5. Ubuntu+IntelliJ IDEA+Android 配置NDK环境+openCV

    最近需要将Python人证对比模型移植安卓端.安卓端需要使用openCV简单的人像提取处理.在配置openCV前首先需要配置NDK环境. NDK的介绍(http://www.cnblogs.com/l ...

  6. 001 python基础实战

    报名了阿里大学的AI,一直没有学习,今天开始正式学习. 今天是第一节,Python的基础编程实战,里面包含两个示例. 一:任务实现文件的批量重命名. 1.创建一个目录 2.程序 #!/usr/bin/ ...

  7. [Error]Python虚拟环境报错 OSError: setuptools pip wheel failed with error code 2

    mkvirtualenv py35 python新建虚拟环境报错,setuptools pip wheel failed with error code 2 刚好昨天在CentOS安装的时候也总是报s ...

  8. GG的文化课

    attack大神退役后,我连文化课都被吊打了 attack:我要回来虐你们了 attack:怎么感觉能裸分清北呢 attack:我稳了 attack:你们个菜鸡,连bed和bad怎么读都不知道

  9. js估算一篇文章的阅读时长

    每天早上上班在地铁里我都有看技术类文章以及实时新闻的习惯,偶尔会看到有些文章的开始部分会提醒我们这篇文章大概的阅读时长,我就在想这是怎么实现的,具体到前端开发中,又是如何实现的.今天在浏览Segmen ...

  10. HTML5_canvas_pen.translate()_

    .save() 和 .restore() 除了会保存之前的样式,还会保存之前的坐标轴 pen.translate(x, y); 将画布的 坐标轴原点(0, 0) 从画布的左上角,移动到 (x, y) ...