Python和giL的关系

gil是Python中的解释器锁,是指同一进程有多个线程的时候,一个线程运行的时候就会给Python的解释器枷锁,这个锁就是gil锁,使得进程内的其他线程无法运行,这样保证同一时间段内只有一个线程运行在Python解释器里。等到该线程运行完成之后,锁打开释放Python解释器,当在运行的线程陷入耗时操作时,则解释器的锁打开,使得其他的线程能够运行。所以在多线程的操作中,线程的运行也是有先后顺序的,并不是同时进行的。多进程中相当于每个进程都被系统分布资源,所以相当于有多个Python解释器,可以多进程可以实现多个进程的同时运行,但是缺点就是耗费资源十分的大。

----一行代码求和1-100

sum(range(1,101))

----Python实现列表的去重的方法、

way:先通过集合去重之后再转列表

list=[11,12,12,13,14,15,15]

a=set(list)#这一步已经达到恋人集合去重效果】

[x for x in a ]

#get ,这一步就返回列表的状态。

 

转载于:https://www.cnblogs.com/coder-2017/p/8759894.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PythonGIL是全局解释器锁(Global Interpreter Lock)的缩写,它是一种机制,用于在多线程环境下控制Python程序对共享资源的访问。GIL的存在使得在同一时刻只有一个线程能够执行Python字节码,这导致了Python在处理多线程任务时的性能问题。尽管Python的多线程可以提供并发的效果,但由于GIL的存在,实际上只能是在多个线程之间进行切换,而不是真正的并行执行。 在Python中,GIL的存在主要是为了保证线程安全。由于CPython解释器的内部数据结构并不是线程安全的,所以GIL确保了在同一时刻只有一个线程能够访问解释器的内部数据。这样可以避免多个线程同时访问共享资源而导致的数据竞争和不一致性。 然而,GIL也带来了一些问题。由于只有一个线程可以执行Python字节码,所以在CPU密集型的多线程任务中,使用多线程并不能真正提高性能,因为每个线程都要等待GIL的释放才能执行。这使得Python在处理CPU密集型任务时比较慢。 另一方面,对于I/O密集型的任务,GIL的影响较小。当一个线程在进行I/O操作时,它会主动释放GIL,让其他线程获得执行机会。因此,在I/O密集型任务中,多线程可以提高程序的执行效率。 尽管GIL对多线程的性能有一定的限制,但Python社区一直在努力改进GIL,甚至尝试去除它。在Python的不同版本中,也有对GIL的改进和优化。但需要注意的是,GIL的移除并不是一件容易的事情,因为它涉及到Python解释器的内部结构和线程安全性的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值