【问题标题】:how to avoid logging multiple number of times while using python threads如何在使用python线程时避免多次记录
【发布时间】:2012-01-02 19:46:14
【问题描述】:

在单个 thread.run() 中,我在相应的网页中找到了几个字符串 如果找到,我会将文本记录到日志文件中。

让我们在对应的 4 个网页中说 4 个字符串。

当我运行单个线程时,日志文件为相应网页中的每个字符串显示 4 个日志

我在一个线程中总共获得了 16 个日志,而我期望 4 个字符串搜索只有 4 个日志。 我不确定哪里出了问题..

https://github.com/sumankumar/websitemonitor

任何指向这个设计的指针,或者我做错的地方 (我对所有文件都使用全局记录器,并在必要时导入记录器)

myLogFile = logging.FileHandler("./example.log")

我猜是我创建的记录器对象

myLogFile = logging.FileHandler("./example.log",'w')

行为有点不同

(最后..请对我的代码提出任何其他建议:-))

【问题讨论】:

  • 这里没有显示任何记录器,而是处理程序。在其他系统中,这些可能是相同的,但在 Python 中,日志记录器和处理程序具有不同的角色。除了阅读 Python 文档之外,您还可以查看本教程以获取更多信息:plumberjack.blogspot.com/2009/09/python-logging-101.html

标签: python multithreading logging


【解决方案1】:

您可以使用Queue,并让所有线程将数据写入队列实例。然后从另一个线程中读取该队列并在那里记录。队列负责锁定/同步。 (多生产者/单一消费者模型)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2013-10-31
    相关资源
    最近更新 更多