繁体   English   中英

自定义线程python上的线程锁

[英]thread Lock on Custom Thread python

有人能告诉我在哪里可以将锁放在 python 中的自定义线程中吗?

import threading
lock = threading.Lock()

class WorkerThread(threading.Thread):
    def __init__(self,lock):
        super(WorkerThread,self).__init__()
        self.lock = lock
    def run(self):
        self.lock.acquire()
        print "Hello World"
        self.lock.release()


worker = WorkerThread(lock)

错误追溯:

Traceback (most recent call last):
  File "<buffer>", line 14, in <module>
  File "<buffer>", line 11, in __init__
AssertionError: release() of un-acquire()d lock

你混合了制表符和空格。 run大部分定义实际上嵌套在__init__内部,而self.lock.release()实际上在run外部和__init__内部。 您的线程最终会尝试在创建线程时释放未锁定的锁。

不要混用制表符和空格。 坚持空间。 在您的编辑器中打开“显示空白”以使问题更明显,如果您的编辑器不能这样做,请使用更好的编辑器。 使用-tt标志运行 Python 也有助于捕获这些错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM