Python循环仅适用于包含的Print()

2024-10-01 13:45:15 发布

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

我目前对以下代码有问题(使用PyQt5的python 3.4.3):

    while not joblist ==[]:          

        currentitem = joblist.pop()
        self.lstthreads.item(threadnum-1).setText("thread" + str(threadnum) + " - " + str(len(joblist)) + " items left to process.")

这个片段在一个线程中,我首先将一个巨大的文本文件加载到一个列表中,然后将它分成5部分。每个部分都在上面的线程中运行。如您所见,每个循环都会使用pop()删除一个项目,并且列表框(pyqt)会在pop()之后用列表中剩余的项目总数进行更新,以跟踪进度。你知道吗

但是,列表框显示: Thread1-剩余0个要处理的项。 Thread2-还有0个项目要处理。 Thread3-剩余0个项目要处理。 Thread4-剩下0个项目要处理。 Thread5-剩余0个项目要处理。你知道吗

但奇怪的是,如果我添加这样的打印语句:

    while not joblist ==[]:          
        print ("trash")
        currentitem = joblist.pop()
        self.lstthreads.item(threadnum-1).setText("thread" + str(threadnum) + " - " + str(len(joblist)) + " items left to process.")

我得到了我所期望的: Thread1-还有1396个项目要处理。 Thread2-还有1396个项目要处理。 Thread3-还有1396个项目要处理。 Thread4-1396项剩余处理。 Thread5-1396项剩余处理。你知道吗

列表框项也会按预期更新,为什么会这样?你知道吗


Tags: 项目selflennotitempopthreadwhile