use*_*910 6 python logging multithreading
我正在尝试将多个线程的日志存储到单个文件中。但在我的日志文件中,来自不同线程的日志正在合并。我不想为不同的线程使用单独的日志文件。但是,当一个线程将日志写入文件时,另一个线程应该等待,直到前一个线程完成所有日志的写入。我尝试了不同的方法,但最终没有找到合适的解决方案。
from threading import Thread, current_thread
import threading
import time
import logging
logging.basicConfig(filename='LogsThreadPrac.log', level=logging.INFO)
logger = logging.getLogger(__name__)
def worker(val):
print('value from the thread: {}'.format(val))
logger.info('+++++++++++++++++++++++++++++++++++++++')
print(current_thread().name)
logger.info('value from the thread: {}'.format(val))
time.sleep(3)
logger.info('+++++++++++++++++++++++++++++++++++++++')
t1 = Thread(target=worker, args=[1,], name='th'+str(1))
t1.start()
t2 = Thread(target=worker, args=[2,], name='th'+str(2))
t2.start()
Run Code Online (Sandbox Code Playgroud)
小智 1
您可以将锁作为参数传递给您的工作人员,这样您就可以按照您想要的方式同步线程。
from threading import Thread, current_thread, Lock
import threading
import time
import logging
logging.basicConfig(filename='LogsThreadPrac.log', level=logging.INFO)
logger = logging.getLogger(__name__)
logger_lock = Lock()
def worker(val, lock):
print('value from the thread: {}'.format(val))
with lock:
logger.info('+++++++++++++++++++++++++++++++++++++++')
print(current_thread().name)
logger.info('value from the thread: {}'.format(val))
time.sleep(3)
logger.info('+++++++++++++++++++++++++++++++++++++++')
t1 = Thread(target=worker, args=[1, logger_lock], name='th'+str(1))
t1.start()
t2 = Thread(target=worker, args=[2, logger_lock], name='th'+str(2))
t2.start()
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看有关锁用途和示例的更多信息
| 归档时间: |
|
| 查看次数: |
11447 次 |
| 最近记录: |