自定义线程python上的线程锁定

时间:2017-02-10 00:47:53

标签: 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

1 个答案:

答案 0 :(得分:1)

您混合了标签和空格。 __init__的大多数定义实际上嵌套在self.lock.release()中,run实际上在__init__之内和-tt之内。您的线程最终尝试在线程创建时释放解锁的锁。

不要混合标签和空格。坚持空间。在编辑器中启用“显示空白”以使问题更加明显,如果编辑器无法执行此操作,则可以获得更好的编辑器。使用{{1}}标志运行Python也可以帮助捕获这些错误。