在多线程应用程序中,我需要将一组日志消息(上限为50K日志消息)一起编写为块,而不是逐个编写每个消息。
我不想在这里使用线程锁定(使我的块记录为关键部分),因为有明显的副作用,例如序列化,同步,这会降低性能。
为了避免同步,我想使用每个线程缓冲区,这样每个线程都将使用自己的缓冲区。它还将在使用缓冲区之前或之后清除它,即一旦将日志写入文件。
我想首先将这些日志写入缓冲区,然后使用python logger的日志消息API将缓冲区写入日志文件
logger.info("Log message")
如果我将日志消息的大小视为大约50个字节,则此缓冲区的总大小为2.5MBytes(50K x 50字节)
我想了解python的logger如何使用这个大小的缓冲区?它是否会影响性能以及它会以什么方式影响?
如果有其他python API可用于支持此类日志记录,请告诉我。
答案 0 :(得分:1)
不,python将2.5MB缓冲区写入文件没有问题。
像磁盘I / O,写入阻塞主线程等问题可能会影响性能,但通常python可以轻松地将2.5MB缓冲区转储到磁盘上。