我正在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_()
输出INFO:root:starting thread INFO:root:JVM started INFO:root:JVM stopped