1、线程
线程被称为轻量级进程,是最小执行单元,系统调度的单位。线程切换需要的资源一般,效率一般。
2、多线程
在单个程序中同时运行多个线程完成不同的工作,称为多线程
3、并发:
操作系统同时执行几个程序,这几个程序都由一个cpu处理,但在一个时刻点上只有一个程序在cpu上处理
4、并行:
操作系统同时执行2个程序,但是有两个cpu,每个cpu处理一个程序,叫并行
5、串行:
是指的我们从事某项工作是一个步骤一个步骤去实施
#python3是假的多线程,它不是真真正正的并行,其实就是串行,只不过利用了cpu上下文的切换而已
1 mport threading 2 import time 3 # def test1(): 4 # for i in range(10): 5 # time.sleep(1) #睡1s 6 # print('test1=========>%s' % i) 7 # 8 # 9 # def test2(): 10 # for i in range(10): 11 # time.sleep(1) 12 # print('test2=========>%s' % i) 13 # 14 # t1 = threading.Thread(target=test1) #定义一个线程 target=函数名 15 # t2 = threading.Thread(target=test2) 16 # t1.start() #开启线程 17 # t2.start() 18 # test1() 19 # test2()
# 多线程是无序的,并发的
因为在启动一个线程时,线程不会立即执行,而是等待cpu的资源调度。
1 # def test1(n): 2 # time.sleep(1) 3 # print('task', n) 4 # for i in range(10): 5 # t = threading.Thread(target=test1,args=('t-%s' % i,)) #args= 后接输出结果 末尾必须加 “ , ” 号 6 # t.start()
#计算并发所用的时间
1 2 # import threading 3 # import time 4 # def dest(n): 5 # time.sleep(1) 6 # print('this is running====>%s' %n) 7 # l = [] #定义一个空列表 8 # start = time.time() #开始的时间 9 # for i in range(10): #10个进程 10 # t = threading.Thread(target=dest,args=(i,)) 11 # t.start() 12 # l.append(t) #把线程执行时间加入到列表 13 # for g in l: 14 # g.join() #等待全部线程执行完毕 15 # end = time.time() #执行结束时间 16 # print('time',(end-start)) #执行结束时间 - 开始执行的时间
1 import threading 2 import time 3 def test1(n): 4 time.sleep(1) 5 print('test1====>%s' %n) 6 def test2(n): 7 time.sleep(2) 8 print('test2====>%s' %n) 9 start = time.time() 10 l = [] 11 t1 = threading.Thread(target=test1,args=(1,)) 12 t2 = threading.Thread(target=test2,args=(2,)) 13 t1.start() 14 t2.start() 15 l.append(t1) 16 l.append(t2) 17 for i in l: 18 i.join() 19 end = time.time() 20 print('time',(end - start))