1

我正在使用 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")

谢谢你的帮助!

4

1 回答 1

0

它很可能与删除线程后访问线程有关。

我认为您的threadsPool 正在尝试在您的线程退出或删除后访问您的线程。在某个地方,threadsPool(或一些类似的容器)有一个插槽或函数调用正在访问一个错误的指针,例如一个已删除的线程。

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

于 2013-01-16T22:48:11.377 回答