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