【问题标题】:Does python queue use the GIL?python队列是否使用GIL?
【发布时间】:2019-05-12 10:03:50
【问题描述】:

python thread safe queue 是使用 GIL,还是使用自己的同步机制?

我想知道,因为我有一个系统如下:

  • 2 个线程读取和写入队列
  • 2 个不相关的线程各司其职,同时通过 GIL 进行同步

我想知道线程对是否会通过锁定机制相互影响。

【问题讨论】:

  • 线程一般使用 GIL。 python中的线程不是并发的
  • @Nullman 谢谢,我知道它们不是并发的,但是如果两个线程对只能相互同步,它们是否也会影响另一对?
  • 因为他们都共享 gil,是的,他们会,当然,除非他们正在运行释放 gil 的代码

标签: python multithreading python-2.7 gil


【解决方案1】:

根据队列的source code我们可以推断出python的安全队列是使用python线程锁实现的,它只会阻塞等待队列对象的线程。

虽然他们没有明确使用 GIL,但重要的是要注意,在阻塞代码中执行也会触发 GIL,因为任何代码访问变量都会触发 GIL。如有必要,您可以在 gil 浏览this question

上记录自己

【讨论】:

    猜你喜欢
    • 2014-06-15
    • 2011-11-15
    • 2018-10-05
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2010-11-02
    • 1970-01-01
    相关资源
    最近更新 更多