'''
1. 什么是GIL全局解释器锁
GIL本质就是一把互斥锁,相当于执行权限,每个进程内都会存在一把GIL,同一进程内的多个线程
必须抢到GIL之后才能使用Cpython解释器来执行自己的代码,即同一进程下的多个线程无法实现并行
但是可以实现并发
在Cpython解释器下,如果想实现并行可以开启多个进程
2. 为何要有GIL
因为Cpython解释器的垃圾回收机制不是线程安全的
3. 如何用GIL
有了GIL,应该如何处理并发
GIL也就是由再Cpython解释器下才会这功能,其他解释器都不会出现
'''
# from threading import Thread
# import time
#
# def task(name):
# print('%s is running' %name)
# time.sleep(2)
#
# if __name__ == '__main__':
# t1=Thread(target=task,args=('线程1',))
# t2=Thread(target=task,args=('线程1',))
# t3=Thread(target=task,args=('线程1',))
# t1.start()
# t2.start()
# t3.start()
# 计算密集型:应该使用多进程,cpu越多处理速度越快
# from multiprocessing import Process
# from threading import Thread
# import os,time
#
# def work():
# res=0
# for i in range(100000000):
# res*=i
#
# if __name__ == '__main__':
# l=[]
# print(os.cpu_count())
# start=time.time()
# for i in range(6):
# # p=Process(target=work)
# p=Thread(target=work)
# l.append(p)
# p.start()
# for p in l:
# p.join()
# stop=time.time()
# print('run time is %s' %(stop-start)) #4.271663427352905
# IO密集型: 应该开启多线程,因为不用在开启内存空间,速度相比进程更加快
from multiprocessing import Process
from threading import Thread
import threading
import os,time
# def work():
# time.sleep(2)
#
# if __name__ == '__main__':
# l=[]
# start=time.time()
# for i in range(300):
# # p=Process(target=work) #2.225289821624756
# p=Thread(target=work) #2.002105951309204
# l.append(p)
# p.start()
# for p in l:
# p.join()
# stop=time.time()
# print('run time is %s' %(stop-start))
GIL全局解释器锁
最新推荐文章于 2024-11-01 15:27:06 发布
1527

被折叠的 条评论
为什么被折叠?



