我的Python程序中有两个类,其中一个是线程。让两个类打开相同的日志文件并写入它是不是一个坏主意?
是否有任何好方法可以为同时运行的两个类写入同一个日志文件?
答案 0 :(得分:2)
这是一个经典的并发问题。您需要确保准确控制正在发生的事情。关于日志文件,最简单的解决方案可能是让队列收集来自不同位置(来自不同线程甚至进程)的日志消息,然后让一个实体从该队列中弹出消息并将它们写入日志文件。这样,至少单个消息保持独立。
如果从不同的非同步实体写入文件,操作系统不会阻止消息混淆。因此,如果您没有明确地控制以什么顺序发生的事情,那么您可能最终会在该文件中显示损坏的消息,即使似乎在大多数情况下都可以正常工作。
答案 1 :(得分:1)
使用python logging module。它为您处理血腥细节。
答案 2 :(得分:0)
只要您控制哪个类正在从文件中读取和写入,并确保其中只有一个可以一次写入,您应该没问题,每次切换时都重新读取该文件。
查看使用lock确保两个类不同时访问该文件。