当我阅读文档时,似乎在threading
和thread
中都提到了锁定对象
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}}
我想知道这两种创作方法之间是否存在差异?
答案 0 :(得分:2)
Python Docs本身推荐threading
模块。
请注意
线程模块已在Python 3.0中重命名为_thread。 2to3工具将 将源转换为3.0时自动调整导入;但是,你 应该考虑使用高级线程模块。
threading
模块放在thread
模块的顶部,如threading docs
此模块在较低级别上构建更高级别的线程接口 线程模块。另请参见互斥锁和队列模块。
因此可以假设他们使用的锁非常接近相同,但threading
模块包装thread
模块调用。
确实在threading docs的后期,它声明:
原语锁是不属于特定原语的同步原语 线程锁定时。在Python中,它目前是最低级别的同步 原始可用,由线程扩展模块直接实现。
总而言之,它们很可能是相同的,并且python本身推荐threading
模块。如果您有疑问,请使用它。