python 线程 logging
时间: 2025-01-08 10:56:07 浏览: 7
### Python 线程安全 Logging 使用方法
在多线程环境中,`logging` 模块提供了内置的支持来确保日志记录操作的安全性。默认情况下,标准库中的 `logging` 已经设计成可以被多个线程安全调用。
为了实现线程安全的日志记录,配置基础设置是必要的:
```python
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(threadName)s - %(levelname)s - %(message)s'
)
```
上述代码设置了全局的日志级别为 INFO,并指定了输出格式,其中包含了时间戳、线程名称以及消息等级和具体内容[^2]。
定义工作函数时,通过获取 logger 实例来进行日志记录:
```python
def worker():
logger = logging.getLogger('worker')
for _ in range(20):
logger.warning("Test thread")
```
创建并启动线程时应传递未执行的工作函数给 `Thread` 对象而不是直接调用该函数作为目标参数:
```python
threads = []
for i in range(1, 5):
t = threading.Thread(target=worker, name=f'Thread-{i}')
threads.append(t)
t.start()
for t in threads:
t.join()
```
这样做能够保证每个新创建的线程都独立运行指定的任务而不会相互干扰。由于 `logging` 的内部锁机制,在并发环境下也能正确处理来自不同线程的日志请求[^1]。
对于更加复杂的场景或者当涉及到子进程中时,则可能需要考虑其他方式如队列化处理器或将日志写入共享文件等方式以维持跨进程间的同步[^3]。
阅读全文