Я занимаюсь разработкой приложения на основе PyQt, в котором есть некоторые компоненты, которые выполняют тяжелую работу в потоке графического интерфейса пользователя (в реальном времени отображают некоторые относительно большие наборы данных).
Мой опыт показывает, что другие части моего графического интерфейса могутпока что это происходит, я не отвечаю, а также хочу запустить несколько потоков и избежать старой проблемы GIL.
Чтобы обойти обе эти проблемы, я хочу запускать различные части своего приложения как отдельные процессы(либо используя многопроцессорный модуль, либо запуская параллельные экземпляры Python, которые обмениваются данными через сокеты).
Мне интересно, можно ли каким-либо образом заставить окна других процессов подключаться в моем главном окне.
Минимальный пример по запросу:
sub_proc_a.py
from PyQt5 import QtWidgets
app = QtWidgets.QApplication([])
sub_process_window = QtWidgets.QWidget()
sub_process_window.setWindowTitle("Dock Me!")
sub_process_window.show()
app.exec_()
master_proc.py
from PyQt5 import QtWidgets
from subprocess import Popen
app = QtWidgets.QApplication([])
main_window = QtWidgets.QMainWindow()
main_window.setWindowTitle("Main window")
main_window.show()
sub_proc_a = Popen("python sub_proc_a.py")
# HOW DO I GET HANDLES TO THE WINDOWS OPENED by sub_proc_a such that I can dock them?
app.exec_()