name 'aLOCK' is not defined When I add aLOCK = threading.RLock() behind if __name__ == "__main__"
xuanwu348
xuanwu348 at 163.com
Thu Aug 9 11:16:37 EDT 2018
Hi team
Good day
The problem I meet when I add "aLOCK = threading.RLock()" to PositionB, the program will report error "name 'aLOCK' is not defined ",
but when I change this code to PositionA, it can run normally, is there any difference for the code between 'if __name__ == "__main__:"', can you help me, thanks!
The file I was attached, please change the extend ".pyx" to ".py", thanks, code as below, tried python2.7 and python3.4:
import threading
import time
from multiprocessing import Process
#PositionA
aLOCK = threading.RLock()
def Save_runnedCMD(filename, strings):
aLOCK.acquire()
with open(filename, "at") as f:
f.write(str(strings) + "\n\r")
aLOCK.release()
def runCMD(filename):
time.sleep(1)
cmd = "testtest"
Save_runnedCMD(filename, cmd)
def Thr_run(filename):
t = []
for i in range(2):
tt = threading.Thread(target = runCMD, args=(filename,))
tt.start()
t.append(tt)
for tt in t:
tt.join()
if __name__ == "__main__":
filename = "./testaaaaa.log"
#PositionB
#aLOCK = threading.RLock()
while 1:
t1 = Process(target=Thr_run, args=(filename, ))
t1.start()
t1.join()
Error info as below:
D:\Appppp>python testa.py
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Python34\lib\threading.py", line 921, in _bootstrap_inner
self.run()
File "C:\Python34\lib\threading.py", line 869, in run
self._target(*self._args, **self._kwargs)
File "D:\Appppp\testa.py", line 15, in runCMD
Save_runnedCMD(filename, cmd)
File "D:\Appppp\testa.py", line 7, in Save_runnedCMD
aLOCK.acquire()
NameError: name 'aLOCK' is not defined
Exception in thread Thread-2:
Traceback (most recent call last):
File "C:\Python34\lib\threading.py", line 921, in _bootstrap_inner
self.run()
File "C:\Python34\lib\threading.py", line 869, in run
self._target(*self._args, **self._kwargs)
File "D:\Appppp\testa.py", line 15, in runCMD
Save_runnedCMD(filename, cmd)
File "D:\Appppp\testa.py", line 7, in Save_runnedCMD
aLOCK.acquire()
NameError: name 'aLOCK' is not defined
More information about the Python-list
mailing list