PyQt垃圾邮件在线程应用程序时随机选择“选择:无效参数”

时间:2013-01-16 18:51:35

标签: python qt pyqt qthread

我正在使用PyQT(Qt版本:4.8.3,PyQt版本4.9.4)来创建大量页面的屏幕截图。我使用线程策略来提高性能。

它几秒钟(大约30秒)就像一个魅力,然后突然该应用程序只是用一个奇怪的“选择:无效的参数”消息来阻止我的终端。

这肯定不是我的调试信息之一。但是,这是非常随机的,我无法真正挖掘这里发生的原因。

如果这可以提供帮助,我生成的线程越多,发生得越快。这可能是一个记忆问题吗?

我不确定这是否有用,但这是我正在使用的产卵方法:

def spawn(self):
    worker = Worker() # this is a QObject
    thread  = QThread()
    # When done, respawn a new thread
    self.connect(worker, SIGNAL("done()"), self.spawn) 
    # And stop the related thread
    self.connect(worker, SIGNAL("done()"), thread.quit)
    self.threadsPool.append(thread) # Keep-alive
    self.workersPool.append(worker) # Keep-alive
    worker.moveToThread(thread)
    thread.start()
    worker.start("myfancydomain.com")

谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

它很可能与删除线程时对线程的访问有关。

我认为你的threadsPool试图在退出或删除自己之后访问你的线程。在某处,threadPool(或类似的容器)有一个槽或函数调用,它正在访问一个坏指针,例如一个已删除的线程。

要验证这是问题所在,请在另一个线程或循环中查询threadsPool中的线程数以及有关每个线程的一些信息。我打赌在第一个线程退出之后,当使用指向该线程的指针时它会崩溃。