我的 Python 程序中有两个类,其中一个是线程。让两个类打开同一个日志文件并写入它是一个坏主意吗?
有没有什么好的方法可以为同时运行的两个类写入同一个日志文件?
这是一个经典的并发问题。您需要确保您完全控制正在发生的事情。关于日志文件,最简单的解决方案可能是让一个队列从不同的地方(来自不同的线程甚至进程)收集日志消息,然后让一个实体从该队列中弹出消息并将它们写入日志文件。这样,至少单个消息保持自包含。
如果您从不同的未同步实体写入文件,操作系统不会防止消息混淆。因此,如果您没有明确控制应该按什么顺序发生,您最终可能会在该文件中收到损坏的消息,即使事情似乎大部分时间都有效。
使用 python日志记录模块。它为您处理血淋淋的细节。
只要您控制哪个类正在从文件中读取和写入,并确保一次只有一个类可以写入文件,您应该没问题,并且每次切换时都重新读取文件。
研究使用lock以确保两个类不会同时访问文件。