情况
我正在使用python 2.7
. 我正在开发一个具有 GUI 的应用程序,使用PyQt4
.
我在小部件中有一个按钮,当您单击它时,它将请求用户指定的一系列 ID。用户可以指定程序应该为“作业”分配多少线程。
我最初的想法
该按钮生成一个作业线程并将 ID 范围和线程数传递给它。然后,作业线程可以创建子线程并根据需要从该范围内向它们传递 ID。
获取所有 ID 后,作业线程可以停止其所有工作线程,然后自行停止。
当工作中的工作线程获取数据时,我将利用信号/插槽来更新 GUI 元素。
我正在使用线程,因此 GUI 在获取过程中仍然可以交互。
问题
当我试图从一个线程中生成一个线程时,发生了“可怕的 PyQt 多线程问题”。
QObject: Cannot create children for a parent that is in a different thread.
我的解决方法
我只是从包含按钮的小部件中生成了作业线程和工作线程,因此不会从线程内生成任何线程,然后将工作线程“连接”到作业线程。
其中aJobaThread = ScrapeThread(self, aJob)
是主作业线程。
这似乎可行,但感觉更像是一种解决方法,而不是正确的方法。
问题
我所做的似乎是一种解决方法,而不是在 PyQt 中进行多线程的正确方法。
有什么建议吗?