我是Python的新手。我有一个具有许多功能的脚本。因此,完成大约10秒钟的时间。为了提高速度,我将一个脚本分为两个(所以现在我有两个具有独立函数的脚本)独立脚本。我正在从另一个脚本中导入一个脚本。因此它可以同时工作。但是,这样做的行为完全改变了。它假设在新日志文件中创建和写作(每次我运行脚本时)。但是现在它也在以前的日志文件中写作。
所以我的猜测是我的记录器配置在两个脚本中都无法正常工作。由于该线程也很慢。任何人都可以查看我的代码并帮助我找到其中的错误吗?
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()
我认为我要么在线程中犯错,要么在logger配置中犯了错误。请帮助我找到自己的错误。如果您需要更多信息,请告诉我。谢谢你
在此处输入图像描述
我想我发现了原因。我必须正确关闭记录仪。因此,我关闭记录器的代码是...
handlers = logger.handlers[:] #close logger
for handler in handlers:
handler.flush()
handler.close()
logger.removeHandler(handler) # was not removing handler
logging.shutdown()
如果我错了,请纠正我。谢谢@treyten Carey