Python PyQt在线程化应用程序时随机发送“选择:无效参数”
我正在使用PyQT版本:4.8.3、PyQT版本4.9.4来创建大量页面的屏幕截图。我使用线程策略来提高性能 它像一个魔咒一样工作了几秒钟,大约30秒,然后突然应用程序向我的终端发送了一条奇怪的选择:无效参数消息 这肯定不是我的调试消息之一。但就像这真的是随机的一样,我真的不知道这发生在哪里/为什么Python PyQt在线程化应用程序时随机发送“选择:无效参数”,python,qt,pyqt,qthread,Python,Qt,Pyqt,Qthread,我正在使用PyQT版本:4.8.3、PyQT版本4.9.4来创建大量页面的屏幕截图。我使用线程策略来提高性能 它像一个魔咒一样工作了几秒钟,大约30秒,然后突然应用程序向我的终端发送了一条奇怪的选择:无效参数消息 这肯定不是我的调试消息之一。但就像这真的是随机的一样,我真的不知道这发生在哪里/为什么 如果这有帮助的话,我产生的线程越多,发生的速度就越快。这可能是内存问题吗 我不确定这是否有用,但以下是我正在使用的繁殖方法: def spawn(self): worker = Worker
如果这有帮助的话,我产生的线程越多,发生的速度就越快。这可能是内存问题吗 我不确定这是否有用,但以下是我正在使用的繁殖方法:
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中的线程数以及关于每个线程的一些信息。我打赌在第一个线程退出后,当使用指向该线程的指针时,它将崩溃。生成的线程越多,发生的速度就越快。这听起来像是竞争条件,或者线程以非线程安全的方式使用某些共享资源,如网络连接。我怀疑问题的原因是您发布的代码,但我真的不知道如何正确诊断。也许尝试使用错误消息获取堆栈跟踪会有所帮助。