Python队列.get(block=true)添加项时不返回超时

2024-10-02 04:24:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我的python应用程序中有2个线程。 线程A(好吧,基本上是“main”线程)向队列中添加项目。 线程B正在从队列中获取它。在

代码A:

def addTrade(self, date, volume, price, exchange):
    '''
    Adds a single trade to the database
    '''
    print "> ADD"
    try:
        self._incomingDataQueue._put(TradeData(exchange=exchange, date=date, volume=volume, price=price))
        # self._dataAvailableEvent.set()
        # self._dataAvailableEvent.clear()
        print "< ADD"
    except Exception as ex:
        print "ex: %s" % ex

线程B有以下内容:

^{pr2}$

所以。。。在

结果是: 线程B启动并等待队列中的项目(超时=20秒)。在B启动之后,几乎是在瞬间,一个项目被添加到队列中。15秒后,另一个项目。在

但是:进入队列的get只在20秒后返回。当有新数据可用时,我希望它返回“几乎即时”。在

输出:

> GET
> ADD
< ADD
> ADD
< ADD
< GET 20

那么,这是队列的正常行为吗?或者我应该使用另一种机制吗?在

提前谢谢!在


Tags: 项目selfadd应用程序getdateexchange队列
1条回答
网友
1楼 · 发布于 2024-10-02 04:24:09

问题是您调用的是Queue._put,而不是Queue.put。我看不出你为什么要那么做。在

前导下划线表示_put方法不是类Queue的公共接口的一部分,因此不应直接调用它。在

相关问题 更多 >

    热门问题