2014-12-01 2 views
0

저는 파이썬에 초보자 며 threading.Lock의 개념을 이해하려고합니다.파이썬 오류 잠금

File "lock.py", line 11, in run 
    self.lock.acquire() 

가 AttributeError : 'builtin_function_or_method'개체가 어떤 속성을 '획득'을이 없습니다

어떤 도움은 매우 극명하게 될 것이다 다음은 내가에서 입력 한 예를 들어, 그 다음과 같은 오류를 제공

#!/usr/bin/python 
import threading 
import Queue 

class suleman(threading.Thread): 
     def __init__(self,q,lock): 
       threading.Thread.__init__(self) 
       self.lock=lock 
       self.queue=q 
     def run(self): 
       self.lock.acquire() 
       file=open('sul.txt','a') 
       q=self.queue.get() 
       print q 
       q=str(q) 
       file.write(q) 
       self.lock.release() 
       self.queue.task_done() 

queue=Queue.Queue() 
lock=threading.Lock 
for i in range(0,10): 
     z1=suleman(queue,lock) 
     z2=suleman(queue,lock) 
     z1.setDaemon(True) 
     z2.setDaemon(True) 
     z1.start() 
     z2.start() 


for i in range(0,10): 
     queue.put(i) 
queue.join() 

입니다 !

+2

자물쇠를 만들지 않고 클래스를 제공하십시오. 이것을 시도해보십시오 :'lock = threading.Lock()' –

답변

1

threading.Lock과 그것은 잠금을 생성, 잠금되지 않습니다 :

In [1]: import threading 

In [2]: threading.Lock 
Out[2]: <function thread.allocate_lock> 

In [3]: threading.Lock() 
Out[3]: <thread.lock at 0x7f9ea666def0> 

그래서 당신이 lock=threading.Lock()lock=threading.Lock을 변경해야합니다.

+0

그것은 작동합니다! 감사:)! 내가 어떻게 그것을 놓쳤는 지 모른다! –