有人可以告诉我在哪里可以将锁放在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
答案 0 :(得分:1)
您混合了标签和空格。 __init__
的大多数定义实际上嵌套在self.lock.release()
中,run
实际上在__init__
之内和-tt
之内。您的线程最终尝试在线程创建时释放解锁的锁。
不要混合标签和空格。坚持空间。在编辑器中启用“显示空白”以使问题更加明显,如果编辑器无法执行此操作,则可以获得更好的编辑器。使用{{1}}标志运行Python也可以帮助捕获这些错误。