demo

import time
import threading

def sing():
"""
测试多线程定义的第一个函数
:return:
"""
for i in range(5):
print("=========sing======%d " % i)
num = len(threading.enumerate())
print("sing当前线程个数为%d" % num)
time.sleep(1)

def dance():
"""
测试多线程定义的第二个函数
:return:
"""
for i in range(5):
print("=========dance======%d " % i)
num = len(threading.enumerate())
print("dance当前线程个数为%d" % num)
time.sleep(1)


def main():
"""
主函数
:return:
"""
sing_thread = threading.Thread(target=sing)
dance_thread = threading.Thread(target=dance)
# 调用t1
sing_thread.start()

# 调用t2
dance_thread.start()
time.sleep(5)
num = len(threading.enumerate())
print("主线程当前线程个数为%d" % num)

#测试主函数


if __name__ == '__main__':
main()

         知识点1:程序运行的时候,分为主线程和子线程,主线程运行到最后,如果子线程没有运行结束,主线程则等待子线程结束后自己再结束。

        知识点2:子线程的创建在start函数开始执行后,sing_thread = threading.Thread(target=sing)该行代码只是创建一个这个对象,并没有子进程的产生。

        知识点3:多个线程之间共享全局变量