在QRunnable线程中使用jpype后如何关闭我的Python Qt应用程序?

问题描述 投票:0回答:1

我正在QRunnable线程中使用jpype(使用PySide2)。当我尝试关闭应用程序时,通过关闭主窗口,Python脚本未完成。我认为仍有一些资源处于活动状态。

QThreadPool没有报告活动线程。

我已经创建了一个简单的演示应用。我的实际应用程序要求线程中的代码在其生命周期内必须多次运行,因此我无法做任何根本性的事情,例如在线程运行后关闭JVM。

我想知道一种干净的整理方式,当我想关闭时。

import logging
import sys
import PySide2.QtCore as qtc
import PySide2.QtWidgets as qtw
import jpype


class Worker(qtc.QRunnable):
    def run(self):
        jpype.startJVM()
        logging.info("JVM started")


def main():
    logging.basicConfig(level=logging.INFO)

    app = qtw.QApplication(sys.argv)

    window = qtw.QWidget()
    window.show()

    thread_pool = qtc.QThreadPool()
    worker = Worker()

    logging.info("starting thread")
    thread_pool.start(worker)

    app.exec_()
python multithreading pyqt5 pyside2 jpype
1个回答
1
投票
输出
INFO:root:starting thread INFO:root:JVM started INFO:root:JVM stopped
© www.soinside.com 2019 - 2024. All rights reserved.