python多任务之多线程介绍


# 主线程:
# 当⼀个程序启动时,就有⼀个进程会被操作系统(OS)所创建,与此同时⼀个线程也⽴刻运⾏,该线程通常叫做程序的主线程
# 主线程的重要性有两⽅⾯: 1)是产⽣其他⼦线程的线程; 2)通常它必须最后完成执⾏⽐如执⾏各种关闭动作。 主线程会等待所有的⼦线程结束后才结束
#
# ⼦线程
# 可以看做是程序执⾏的⼀条分⽀,当⼦线程启动后会和主线程⼀起同时执⾏

# threading.enumerate(),这个方法可以获取当前所有活跃线程的列表。
# 使⽤ len()对列表求⻓度可以看到当前活跃的线程的个数

import threading
from time import sleep, ctime

def dance():
    for i in range(3):
        print("子线程%s正在跳舞%s" %(threading.current_thread(),i))
        sleep(1)

def sing():
    for i in range(3):
        print("子线程%s正在唱歌%s" %(threading.current_thread(),i))

if __name__ == '__main__':
    print("----主线程%s开始运行----%s" %(threading.current_thread(),ctime()))

    t1 = threading.Thread(target=dance)
    t2 = threading.Thread(target=sing)

    t1.start()
    t2.start()

while True:
    length = len(threading.enumerate())
    print("当前的正在运行的线程数为:%d" %length)
    if length <= 1:
        break
    sleep(0.5)
print("主线程%s结束" % threading.current_thread())
#执行结果:
# ----开始----Wed May 20 10:16:07 2020
# 正在跳舞0
# 正在唱歌0当前的线程数为:3
#
# 正在唱歌1
# 正在唱歌2
# 当前的线程数为:2
# 正在跳舞1
# 当前的线程数为:2
# 当前的线程数为:2
# 正在跳舞2当前的线程数为:2
#
# 当前的线程数为:2
# 当前的线程数为:1

#从执行结果中我们可以看出我们开辟了两个子线程来执行唱歌和跳舞的任务,再加上主线程,
# 一开始一共有3个线程在同时运行,其中主线程是始终贯穿在程序中的,直到程序执行结束,当唱歌任务执行完了后,剩下两个线程在运行,
# 最后就只剩下一个主线程了

猜你喜欢

转载自blog.51cto.com/13560219/2496858