方法:

start 线程准备就绪,等待CPU调度
setName 为线程设置名称
getName 获取线程名称
setDaemon 设置为后台线程或前台线程(默认);
如果是后台线程,主线程执行过程中,后台线程也在进行,主线程执行完毕后,后台线程不论成功与否,均停止;
如果是前台线程,主线程执行过程中,前台线程也在进行,主线程执行完毕后,等待前台线程也执行完成后,程序停止
join 逐个执行每个线程,执行完毕后继续往下执行,该方法使得多线程变得无意义
run 线程被cpu调度后自动执行线程对象的run方法
Lock 线程锁(互斥锁Mutex)
Event
‘’’

Daemon(守护进程)

# import threading,time
#
# def run(n):
#     print('[%s]------running----\n' % n)
#     time.sleep(2)
#     print('--done--')
#
# def main():
#     for i in range(5):
#         t=threading.Thread(target=run,args=[i,])
#         t.start()
#         #time.sleep(1)
#         t.join(2)
#         print('starting thread', t.getName())
#
# m=threading.Thread(target=main,args=[])
# m.setDaemon(True)
# m.start()
# #m.join(timeout=2)
# print("---main thread done----")

线程锁(互斥锁Mutex)

‘’’
锁的使用
创建锁
mutex = threading.Lock()
锁定
mutex.acquire([timeout])
释放
mutex.release()
‘’’

import threading
import time

def addNum():
    global num  #在每个线程都获取这个全局变量
    print('--get num:',num  )
    time.sleep(1)
    num-=1  #对此变量做-1操作

num=100   #设定一个共享变量
Thread_list=[]
for i in range(100):
    t=threading.Thread(target=addNum)
    t.start()
    Thread_list.append(t)

for t in Thread_list:  #等待所有线程结束
    t.join()

print('final num ',num)