使用Python记录器编写2.5兆字节字符缓冲区

时间:2017-09-06 18:48:42

标签: python python-2.7 python-3.x logging

在多线程应用程序中,我需要将一组日志消息(上限为50K日志消息)一起编写为块,而不是逐个编写每个消息。

我不想在这里使用线程锁定(使我的块记录为关键部分),因为有明显的副作用,例如序列化,同步,这会降低性能。

为了避免同步,我想使用每个线程缓冲区,这样每个线程都将使用自己的缓冲区。它还将在使用缓冲区之前或之后清除它,即一旦将日志写入文件。

我想首先将这些日志写入缓冲区,然后使用python logger的日志消息API将缓冲区写入日志文件

logger.info("Log message")

如果我将日志消息的大小视为大约50个字节,则此缓冲区的总大小为2.5MBytes(50K x 50字节)

我想了解python的logger如何使用这个大小的缓冲区?它是否会影响性能以及它会以什么方式影响?

如果有其他python API可用于支持此类日志记录,请告诉我。

1 个答案:

答案 0 :(得分:1)

不,python将2.5MB缓冲区写入文件没有问题。

像磁盘I / O,写入阻塞主线程等问题可能会影响性能,但通常python可以轻松地将2.5MB缓冲区转储到磁盘上。