Pyside2多线程关闭,有谁知道该怎么处理么?

十秒耿直拆包选手 2021-02-28 12:24:51
RT,官方给的文档是c++的,写了后始终有保存内容“Process finished with exit code 1073741845”。我的多线程代码如下:
from PySide2.QtCore import QThread
from PySide2.QtCore import QObject
from PySide2.QtWidgets import QApplication
from PySide2.QtWidgets import QFileDialog
# 信号槽
from PySide2.QtCore import Signal
from PySide2.QtCore import Slot
from process_package.process_data_module import TrackDataProcessing


class FileManager(QObject):
def __init__(self):
super(FileManager, self).__init__()

self.__init_instance()
self.__init_connections()


def __del__(self):
# print('delete')
self.__split_data_thread.quit()
self.__split_data_thread.wait()


def split_data_to_new_file(self):
"""
打开对话框选择要拆分数据的文档,将文档名列表传给后端处理

"""
# 获取打开的所有文件名列表
files_in_list = QFileDialog.getOpenFileNames()[0]

# 打开文件数不为0,将文件名列表传给后端处理
if 0 != len(files_in_list):
# 判断子线程状态,如果没有启动,则启动子线程
self.__start_sub_thread(self.__split_data_thread, self.__track_processing)

self.si_file_name_with_path.emit(files_in_list)


@Slot()
def __close_application(self):
"""
退出程序

"""
QApplication.closeAllWindows()


def __init_instance(self):
"""
初始化对象变量

"""
self.__track_processing = TrackDataProcessing()
self.__split_data_thread = QThread()


def __init_connections(self):
"""
初始化信号槽

"""
# 信号槽新写法,推荐
# 向槽函数传递打开文件名的列表
self.si_close_application.connect(self.__close_application)


def __start_sub_thread(self, thread: QThread, process: QObject):
"""
启动将变量迁入子线程,启动子线程
:param thread: 子线程
:param process: 迁入子线程的变量

"""
self.si_file_name_with_path.connect(self.__track_processing.split_data_to_different_file)
if not thread.isRunning():
process.moveToThread(thread)
thread.finished.connect(process.deleteLater)
self.si_file_name_with_path.connect(self.__track_processing.split_data_to_different_file)
thread.start()


# 打开的文件名及文件路径
si_file_name_with_path = Signal(list)
si_close_application = Signal()


我在“__del__(self)”中终止进程,在“__start_sub_thread”启动子线程,同时创建信号槽。后续读取数据什么操作都可以正常进行,就是关闭程序后有前面哪行异常,不知道线程出错到哪里了。
...全文
367 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧