在python中创建锁

时间:2011-12-06 12:08:25

标签: python multithreading locking

当我阅读文档时,似乎在threadingthread中都提到了锁定对象 threading.Lock()库,所以我发现创建锁的方法有两种:thread.allocate_lock()thread.lock,返回值都是>>> a = thread.allocate_lock() >>> b = threading.Lock() >>> a <thread.lock object at 0x1002ab190> >>> b <thread.lock object at 0x1002ab0f0> 类型。

{{1}}

我想知道这两种创作方法之间是否存在差异?

1 个答案:

答案 0 :(得分:2)

Python Docs本身推荐threading模块。

  

请注意
  线程模块已在Python 3.0中重命名为_thread。 2to3工具将   将源转换为3.0时自动调整导入;但是,你   应该考虑使用高级线程模块。

threading模块放在thread模块的顶部,如threading docs

中所述
  

此模块在较低级别上构建更高级别的线程接口   线程模块。另请参见互斥锁和队列模块。

因此可以假设他们使用的锁非常接近相同,但threading模块包装thread模块调用。

确实在threading docs的后期,它声明:

  

原语锁是不属于特定原语的同步原语   线程锁定时。在Python中,它目前是最低级别的同步   原始可用,由线程扩展模块直接实现。

总而言之,它们很可能是相同的,并且python本身推荐threading模块。如果您有疑问,请使用它。