Python PyQt在线程化应用程序时随机发送“选择:无效参数”

Python PyQt在线程化应用程序时随机发送“选择:无效参数”,python,qt,pyqt,qthread,Python,Qt,Pyqt,Qthread,我正在使用PyQT版本:4.8.3、PyQT版本4.9.4来创建大量页面的屏幕截图。我使用线程策略来提高性能 它像一个魔咒一样工作了几秒钟,大约30秒,然后突然应用程序向我的终端发送了一条奇怪的选择:无效参数消息 这肯定不是我的调试消息之一。但就像这真的是随机的一样,我真的不知道这发生在哪里/为什么 如果这有帮助的话,我产生的线程越多,发生的速度就越快。这可能是内存问题吗 我不确定这是否有用,但以下是我正在使用的繁殖方法: def spawn(self): worker = Worker

我正在使用PyQT版本: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")

谢谢你的帮助

这很可能与删除线程时访问该线程有关

我认为您的threadsPool正在尝试在退出或删除自身后访问您的线程。在某个地方,threadsPool或某个类似容器调用了一个插槽或函数,它正在访问一个坏指针,例如一个已删除的线程


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

生成的线程越多,发生的速度就越快。这听起来像是竞争条件,或者线程以非线程安全的方式使用某些共享资源,如网络连接。我怀疑问题的原因是您发布的代码,但我真的不知道如何正确诊断。也许尝试使用错误消息获取堆栈跟踪会有所帮助。