多进程应用日志记录器
项目描述
multiprocessing-logging
在使用multiprocessing
模块时,由于子进程应将日志记录到单独的文件/流,或者有记录变得混乱的风险,日志记录变得不太有用。
此简单模块实现了一个Handler
,当设置在根Logger
上时,将处理隧道记录到主进程,以便正确处理。
目前已在Linux和Python 2.7 & 3.6+上进行了测试。
Pypy3在测试中挂起,因此我不建议使用它。
最近Pypy似乎可以正常工作。
仅在POSIX系统上工作,并且仅支持Linux。它不适用于Windows。
起源
此库直接从StackOverflow帖子中提取出来,并将其转换为模块,这样我就不必在每个项目中复制代码。
后来,贡献了几个改进。
用法
在您开始记录日志但配置日志框架之后(也许使用logging.basicConfig(...)
),执行以下操作
import multiprocessing_logging
multiprocessing_logging.install_mp_handler()
这样就完成了。
使用 multiprocessing.Pool
在使用 Pool 时,请确保在实例化 Pool 之前调用 install_mp_handler
,例如
import logging
from multiprocessing import Pool
from multiprocessing_logging import install_mp_handler
logging.basicConfig(...)
install_mp_handler()
pool = Pool(...)
问题
该模块的方法依赖于使用 fork 来创建新进程。这种方法 当同时使用线程时基本上是不安全的,就像本模块所做的那样。
结果是,在创建新进程时,应用程序挂起的情况可能性很低。
作为补救措施,不要持续创建新进程。相反,创建一个 Pool 并重复使用它。
项目详情
关闭
multiprocessing_logging-0.3.4-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8a5be02b02edbd6fa6e3e89499af7680db69db9e2d8707fcd28d445fa248f23e |
|
MD5 | f79b62a9ba38cd45b95038dbf33e1b67 |
|
BLAKE2b-256 | 9efe32bd864bcb604b0607924a4cf618ed267a0ef21ac9c3e255109256046e1f |