首页 > 编程语言 > 详细

Python 多线程-线程的调用和join

时间:2021-01-09 00:36:34      阅读:33      评论:0      收藏:0      [点我收藏+]

进程 Progress: 本质上就是一段程序运行的过程

线程 Thread: 线程是进程里面的执行单元

 

1. 线程的基本调用

import threading
import  time

def hi_thread(i):
    time.sleep(3)
    print(thread %s%i)


if __name__ == __main__:
    t1=threading.Thread(target=hi_thread,args=(1,))
    t2=threading.Thread(target=hi_thread,args=(2,))
    t3=threading.Thread(target=hi_thread,args=(3,))
    t4=threading.Thread(target=hi_thread,args=(4,))

    t1.start()   # 线程1
    t2.start()   # 线程2
    t3.start()   # 线程3
    t4.start()   # 线程4
    print(main thread) # 主线程

 

join 方法: 当线程调用 join方法以后,排在join后面的线程必须在该调用join方法的线程完成之后再执行

 

2. 线程的 join 方法

import threading
import time


def music():
    print(start listen to music... %s % time.ctime())
    time.sleep(3)
    print(end to music...%s % time.ctime())


def game():
    print(start play to game...%s % time.ctime())
    time.sleep(6)
    print(end to game...%s % time.ctime())


if __name__ == __main__:
    t1 = threading.Thread(target=music, args=())
    t2 = threading.Thread(target=game, args=())

    t1.start()
    t2.start()

    t1.join()    # t1 不结束, main线程就不会执行,因为main线程排在 join的后面

    print(main thread %s % time.ctime())  # 主线程

 

 

setDaemon方法:

守护线程;当我们在程序的运行当中,执行一个主线程,如果主线程有创建了子线程,那么主线程和子线程就

兵分两路分别运行,当主线程完成之后程序想退出的时候,会检查子线程是否完成,如果子线程未完成,则主线程会等待子线程完成之后

再退出,但是有时候我们需要的是只要主线程完成后,不管子线程有没有完成,都要和主线程一起退出,这时候子线程就要设置setDaemom方法。

setDaemon必须设置在线程start之前。

 

3.线程setDaemom方法

import threading
import time


def music():
    print(start listen to music... %s % time.ctime())
    time.sleep(3)
    print(end to music...%s % time.ctime())


def game():
    print(start play to game...%s % time.ctime())
    time.sleep(6)
    print(end to game...%s % time.ctime())


if __name__ == __main__:
    t1 = threading.Thread(target=music, args=())
    t2 = threading.Thread(target=game, args=())
    t2.setDaemon(True)

    t1.start()
    t2.start()

 

 

4.线程其他基本方法

t1.getName()  # 得到线程名
t1.setName(线程1)  # 设置线程名
t1.is_alive() # 线程是否活着
threading.active_count()  # 返回正在运行线程的数量

 

  

 

Python 多线程-线程的调用和join

原文:https://www.cnblogs.com/liangqingyun/p/14253695.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!