首页 > 编程语言 >python 多线程 join

python 多线程 join

时间:2023-02-13 22:32:25浏览次数:38  
标签:join Thread python getName current threading 线程 print 多线程

当一个进程启动之后,会默认产生一个线程。这个线程就是主线程。如果是多线程时,主线程会创建多个线程。主线程执行完成后就会退出。多线程执行完成后也会退出。

注意:只有守护的子线程退出后,主进程才会退出。

import threading
print(threading.current_thread().getName())

def test1():
    for i in range(3):
        print(threading.current_thread().getName(), i)


def test2():
    for i in range(3):
        print(threading.current_thread().getName(), i)


t1 = threading.Thread(target=test1)
t2 = threading.Thread(target=test2)
t1.start()
t2.start()

print(threading.current_thread().getName())

MainThread为主进程,主进程子线程还没有执行完毕就退出了

MainThread
Thread-1 Thread-2 0
MainThread
0
Thread-1 1
Thread-1 Thread-2 2
1
Thread-2 2

join守护所有线程

守护线程,主线程等待被守护线程执行结束后主线程才退出。

import threading
import time

print(threading.current_thread().getName())

def test1():
    for i in range(3):
        print(threading.current_thread().getName(), i)


def test2():
    for i in range(3):
        time.sleep(1)
        print(threading.current_thread().getName(), i)


t1 = threading.Thread(target=test1)
t2 = threading.Thread(target=test2)
t1.start()
t2.start()
# 守护线程
t1.join()
t2.join()

print(threading.current_thread().getName())

主线程等待子线程后再退出

MainThread
Thread-1 0
Thread-1 1
Thread-1 2
Thread-2 0
Thread-2 1
Thread-2 2
MainThread

join守护一些线程

import threading
import time

print(threading.current_thread().getName())


def test1():
    for i in range(3):
        print(threading.current_thread().getName(), i)


def test2():
    for i in range(3):
      	# 为了看的清楚
        time.sleep(1)
        print(threading.current_thread().getName(), i)


t1 = threading.Thread(target=test1)
t2 = threading.Thread(target=test2)
t1.start()
t2.start()
# 守护t1
t1.join()

print(threading.current_thread().getName())

t2还没有退出主线程已经退出了

MainThread
Thread-1 0
Thread-1 1
Thread-1 2
MainThread
Thread-2 0
Thread-2 1
Thread-2 2

此时,可以守护t2或者守护所有达到守护线程的目的。

join参数

timeout等待单位为秒后无论子线程是否退出,主线程都将退出。

多线程实现方式

上面为一种,还有一种基于类实现。推荐使用类实现--更加优雅!!

标签:join,Thread,python,getName,current,threading,线程,print,多线程
From: https://blog.51cto.com/u_14967494/6054736

相关文章

  • python文件I/O
    1、打印到控制台:printif__name__=='__main__':print('hello')2、读取键盘输入:inputif__name__=='__main__':str1=input('请输入:')print(str1)3、打开......
  • Python_json类方法
    Python_json类方法importrequestsimportjsonheaders={"User-Agent":"Mozilla/5.0(LinuxAndroid6.0Nexus5Build/MRA58N)AppleWebKit/537.36(KHTML,l......
  • Selenium Python 问题汇总
    1.在自动化打开浏览器后会长时间加载,此时使用如下命令解决:driver.set_page_load_timeout(20)#设置浏览器超时加载时间driver.set_script_timeout(20)#这两种设置都进......
  • python列表list的基本属性和常用函数
    一、列表的基本属性1.什么是列表本质:是一种有序的集合列表的创建:list1=[元素1,元素2,元素3,...]2.创建空列表list1=list() list2=[]3.列表中元素的访问使用......
  • esp32用microPython点亮WS2812B彩灯
    ██████╗███████╗██████╗██╗██╗███████╗██╔═══██╗██╔════╝██╔══██╗╚██╗██╔╝██╔═══......
  • C/C++多线程实现龟兔赛跑
    题⽬:⻳兔赛跑跑道距离50⽶乌⻳(⼀个线程)每秒3⽶不睡觉;兔⼦(⼀个线程)每秒5⽶每跑15⽶睡2秒钟。请模拟⽐赛情况:#include<iostream>#include<thread>#include<......
  • 2.13python基础知识
      编程语言的发展史1.机器语言:内部用0和1表示2.汇编语言:简单的字母表示二进制3.高级语言:人类可以理解的1、执行效率:机器语言>汇编语言>高级语言(编译型>解释型)2......
  • python基础学习第一天
    目录一、typora软件及使用1、typora下载官方网站下载:https://www.typoraio.cn/windos系统下,下载和安装都不要在c盘,c盘是系统盘2、typora的使用书写标题警号+空......
  • Python基础前言
                                 计算机内部存储数据的原理"""计算机内部只认识01二进制"""是因为计算机......
  • [oeasy]python0082_颜色设置
    更多颜色回忆上次内容上次了解了控制序列背后的故事一切标准都是从无到有的就连负责标准的组织也是从无到有的VT-05奠定了基础颜色黑底绿字隔行扫描但多颜......