进程和线程
[线程]:操作系统进行运算调度的最小单位,它被包含在进程之中,是进程的实际运作单位,一个线程是进程中一个单一的顺序控制流,一个进程可以并发多个线程,每个线程可以执行不同的任务
[进程]:执行一个程序的实例叫进程
---------------------------------------------------------------------------------------------
线程的有两种调用方式:1.直接调用 2.继承调用
直接调用[例]:
1 import threading 2 import time 3 def hello(num): 4 5 print('hello %d' %num) 6 7 time.sleep(3) 8 9 10 if __name__='__main__': 11 t1=threading.Thread(target=hello,args=(1,)) #生成线程实例t1 12 t2=threading.Thread(target=hello,args=(2,)) #生成线程实例t2 13 t1.start() #启动线程t1 14 t2.start() #启动线程t2
继承调用[例]:
1 import threading 2 import time 3 4 class MyThread(threading.Thread): 5 6 def __init__(self,num): 7 threading.Thread.__init__(self) 8 self.num=num 9 10 def hello(self): 11 print('hello %s'%self.num) 12 time.sleep(3) 13 14 if __name__=='__main__': 15 t1=MyThread('1') 16 t2=MyThread('2') 17 t1.start() 18 t2.start()
lock锁:
GIL锁处于编译层的锁;
threading.Lock(),threading.RLock()处理python层的锁,保护自己内存数据的锁;
^__递归锁