1

情况

我正在使用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 中进行多线程的正确方法。

有什么建议吗?

4

0 回答 0