python遇到队列、dict、float和多个文件的问题

2024-04-27 13:04:02 发布

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

我对浮点值和dict队列有问题。 我真的不知道发生了什么。我想说清楚:

这是一个名为cqueue.py公司地址:

from collections import deque
def DestroyQueue(q):
        while LenQueue(q) >0:
                q.popleft()

def GetQueue(q):
        item=q.popleft()
        AddQueue(q,item)
        return item

def AddQueue(q,tdict={}):
        q.append(tdict)

def LenQueue(q):
        return len(q)


rcv_queue= deque()
can_queue= deque()

在处理了一些数据之后,我的rcv\u队列中充满了大量的dict。每个dict有许多值(大约30对或更多)。你知道吗

现在,在一个名为匹配.py“,我有这样的例行公事:

qlen=LenQueue(rcv_queue)
while qlen>0:
    pdict = {}
    pdict = GetQueue(rcv_queue)
    #THINGS
    if something
        AddQueue(can_queue,pdict)
    qlen-=1
DestroyQueue(rcv_queue)
DbSimCases()

这个“#THINGS”是关于处理每个dict和每对数据,新的dict(pdict)存储在canŠu队列中,该队列的大小较小(大约5个dict,超过50对)。 DestroyQueue被调用以弹出所有dict并销毁不再使用的rcv\u队列。 所以调用DbSimCases()来捕获can\队列(从cqueue.py公司)并存储在mysql数据库中。 问题是: 在匹配.py,dict float值一切正常,但当从DbSimCases调用can\u queue时(第三个文件名为基本.py),浮点值更改。 为了发现这个问题,我使用了如下打印方式:

---开匹配.py你知道吗

qlen=LenQueue(rcv_queue)
while qlen>0:
    pdict = {}
    pdict = GetQueue(rcv_queue)
    #THINGS
    if something
        AddQueue(can_queue,pdict)
        o=GetQueue(can_queue)
        print "pdict->args_score: " + str(p_args_score)
        print "queue->args_score: " + str(o['p_args_score'])
    qlen-=1
DestroyQueue(rcv_queue)
DbSimCases()

---/结束

---开基本.py你知道吗

def DbSimCases()
    clen=LenQueue(can_queue)
    while clen > 0:
        pdict2={}
        pdict2=GetQueue(can_queue)
        print "pdict2->args_score: " + str(pdict2['p_args_score'])

所以结果应该是相同的浮动3倍。但我知道了:

pdict->args_score: 1.8
queue->args_score: 1.8
pdict2->args_score: 0.0

这里是整个pdict和pdict2(一行一行地排序和匹配,以查看上面描述的许多问题):http://pastebin.com/ZffTMGxq

有人能帮我吗?知道我做错什么了吗? 谢谢,我们将非常感谢您的帮助。你知道吗


Tags: py队列queuedefargscandictscore
1条回答
网友
1楼 · 发布于 2024-04-27 13:04:02

我修好了。你知道吗

我在上面写了第三句话匹配.py像这样:

qlen=LenQueue(rcv_queue)
while qlen>0:
  pdict = {}
  pdict = GetQueue(rcv_queue)
  auxdict={}
  #THINGS
  if something
    auxdict['key']=pdict['key']
    AddQueue(can_queue, auxdict)
  qlen-=1
DestroyQueue(rcv_queue)
DbSimCases()

它作为一个辅助dict,只有几个选定的dict。Pdict有很多我不想要的东西,使用相同的dict传递给新的dict,是一个错误的决定和实践。你知道吗

相关问题 更多 >