【问题标题】:Python wait for request to be processed by queue and continue processing based on responsePython等待请求被队列处理并根据响应继续处理
【发布时间】:2020-03-30 13:27:37
【问题描述】:

我有以下设置:

  1. 一个运行目录爬虫并解析文档的线程
  2. 另一个处理数据库请求的线程进入队列 - 有两个基本数据库请求通过 - 标记文档已处理(写入操作)并且是文档 已处理(选择操作)

我了解sqlite连接对象不能跨线程共享,所以连接是在数据库线程中维护的。虽然我是线程新手,但在我的解析器线程中,我想首先检查是否已处理文档,这意味着数据库调用,但显然不能直接执行此调用,必须将请求发送到数据库线程,这很好。

但是,我卡住的地方是我不确定如何让解析器线程等待数据库线程中“已处理文档”请求的结果。这是线程事件的来源吗?

提前感谢您的帮助!

【问题讨论】:

  • “我了解到一个 sqlite 连接对象不能跨线程共享”:您对此有什么参考吗?我的经验是:不能共享光标对象
  • 你是对的,光标不能共享,但为了提高效率,我为我的数据库采用了单例设计,以消除总是必须建立连接的开销。所以我的单例模式在调用时总是返回光标,这就是为什么我不能从不同的线程调用 if。
  • “他的线程事件会在哪里出现?”:阅读threading.Event.wait,应该做你想做的事。

标签: python multithreading queue


【解决方案1】:

感谢 stovfl,使用线程事件来实现这一点。再次感谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 2014-04-23
    • 1970-01-01
    • 2010-12-16
    相关资源
    最近更新 更多