나는 python에서 새롭다. 많은 기능을 가진 하나의 스크립트가 있습니다. 그래서 끝내기까지 약 10 초가 걸렸습니다. 속도를 향상시키기 위해 필자는 하나의 스크립트를 두 개로 나눴습니다 (이제 독립 기능을 가진 두 개의 스크립트가 있습니다). 다른 스크립트를 가져 오는 중입니다. 그래서 동시에 작동 할 수 있습니다. 하지만 이렇게하면 로거의 동작이 완전히 변경됩니다. 새 로그 파일을 작성하고 작성하는 것으로 가정합니다 (스크립트를 실행할 때마다). 하지만 지금은 이전 로그 파일에도 쓰고 있습니다.동시에 실행되는 2 개의 스크립트에서 하나의 파일에 로그인하는 방법은 무엇입니까?
내 생각에 로거 구성이 두 스크립트에서 동시에 작동하지 않습니다. 왜냐하면 그 스레딩은 또한 느리게 실행되기 때문입니다. 누구든지 내 코드를 확인하고 실수를 찾을 수 있도록 도와주세요. ??
script_1.py
script_path = os.path.dirname(os.path.realpath(sys.argv[0]))
dat = str(datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S'))
logger = logging.getLogger("main_script")
logger.setLevel(logging.INFO)
fh = logging.FileHandler(script_path + '\\..\\main_script_' + dat".log")
logger_file_path = script_path + '\\..\\main_script_' + dat + ".log"
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)
def CloseLogger():
"""CloseLogger function closes the logger """
handler = logger.handlers[:]
for i in handler:
i.flush()
i.close()
logger.removeHandler(i)
#other independent functions
if__name__== "__main__":
main_1()
script_2.py
from threading import Thread
from script_1 import *
run_script1 = Thread(target = main_1)
run_script1.start()
logger = logging.getLogger('main_script.script_2') # second part of original script
#other independent functions
if__name__== "__main__":
run_script2 = Thread(target = main_2)
run_script2.start()
run_script2.join()
run_script2.join()
나는 스레딩 또는 로거 구성에서 실수를 저지르고 있다고 생각합니다. 실수를 찾아 내도록 도와주세요. 자세한 정보가 필요하면 알려주십시오. 내가 원인을 찾은 것 같아 당신에게
설명을 위해, 새 파일 대신 이전 파일에 쓰고 있다고합니다. 변수'dat'을 기반으로하면, 현재 시간이 아닌 이전 시간을 얻고 있다는 뜻입니까? –
nop, 나는 그렇게 생각하지 않는다. 왜냐하면 내가 모든 스크립트를 하나의 스크립트에 넣었을 때 내 기존 스크립트에서 완벽하게 작동했기 때문이다. –
script_1을 완벽하게 가져 오는 이유는 무엇입니까? 모듈이나 스크립트를 두 가지 방식으로 가져올 수 있기 때문입니다. 1) 가져 오기 모듈 이름 2) 모듈에서 가져 오기 * –