小编Nor*_*ern的帖子

使用Qt进行多处理适用于Windows,但不适用于Linux

我正在使用Qt开发GUI应用程序.

当我尝试QApplication使用multiprocessing以下方法创建另一个时出错:

RuntimeError:QApplication实例已存在

我有一个主窗口,其中包含一个用于生成新进程的按钮,以便我可以创建一个新的GUI实例.基本上是这样的:

from PySide.QtCore import *
from PySide.QtGui import *
import multiprocessing
import sys


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        btn = QPushButton('run new instance')
        btn.clicked.connect(self.create_daemon)
        self.setCentralWidget(btn)

    def create_daemon(self):
        p = multiprocessing.Process(target=new_window)
        p.start()

def new_window():
    app=QApplication(sys.argv)
    ex = MainWindow()
    ex.show()
    sys.exit(app.exec_())

if __name__=="__main__":
    app=QApplication(sys.argv)
    ex = MainWindow()
    ex.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

它适用于Windows但RuntimeError在Linux中提供.这是因为Windows和Linux之间的多处理机制存在差异吗?我怎么能在Linux中实现同样的东西?

python linux pyqt python-multiprocessing

7
推荐指数
1
解决办法
972
查看次数

sys.exit(app.exec_()) 和 app.exec_() 之间的区别

我正在使用 PySide 和 PyQt 进行 GUI 开发。我一直在使用这些代码来运行 GUI 应用程序:

app = QApplication(sys.argv)
ex = MyWin()
ex.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

偶然发现如果我替换sys.exit(app.exec_())为 only app.exec_(),程序仍然可以正常运行并且可以正确退出。那么这两者有什么区别呢?我有理由使用sys.exit(app.exec_())吗?

python pyqt sys pyside

6
推荐指数
1
解决办法
4924
查看次数

Injectable 如何影响 Angular 2 的性能

我经常在 Angular 2 中使用依赖注入来提供数据服务和数据对象的内存缓存。很自然,我为每种类型的目的都有一个注射剂。随着我的项目的发展,这个问题出现在我身上:

如果我将所有可注入的函数和参数放在一个大类中,并注入到我所有的组件中,性能会受到什么影响?

这可以说明我的意思:

说我是否有 injectable A, BandC和 components a, band c(可能更多,但你明白了)。现在A被注入到a; B被注入b并被C注入到c。如果我将所有可ABC注入对象组合起来并将其注入到组件a, b, 中c,这将如何影响我的性能?

javascript dependency-injection angular

2
推荐指数
1
解决办法
308
查看次数