主要内容:
- 1.线程的创建
- 2.多线程与多进程
- 3.锁
- 4.守护线程
- 5.信号量
1.线程的创建
(1)方式一:


from threading import Thread import time def func(n):time.sleep(2)print(n)if __name__ == '__main__':t = Thread(target=func,args = (1,))t.start()print("主线程结束")
(2)方式二:


from threading import Threadclass MyThread(Thread):def __init__(self,n):super().__init__()self.n = ndef run(self):print (self.n)if __name__ == '__main__':t = MyThread("呵呵")t.start()print("主线程结束")
2.多线程与多进程
进程:导入的模块、执行的python文件的文件所在位置、内置的函数、文件里面的这些代码、全局变量等等,然后线程里面有自己的堆栈(类似于一个列表,后进先出)和寄存器,里面存着自己线程的变量,操作等等,占用的空间很小
(1)线程与进程的效率对比


import time from multiprocessing import Process from threading import Threaddef func(n):num = 0for i in range(n):num += i if __name__ == '__main__':#在主进程下开启线程t_s_t =time.time()t_lst =[]for i in range(10):t = Thread(target=func,args=(10,))t.start()t_lst.append(t)[tt.join() for tt in t_lst]t_e_t = time.time()t_dif_t = t_e_t - t_s_t#在主进程下开启子进程p_s_t = time.time()p_lst = []for ii in range(10):p = Process(target=func,args=(10,))p.start()[pp.join() for pp in p_lst]p_e_t = time.time()p_dif_t = p_e_t -p_s_tprint("线程>>>>",t_dif_t) #0.002962350845336914print("进程>>>>",p_dif_t) #0.29871106147766113print("主线程结束")