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”启动子线程,同时创建信号槽。后续读取数据什么操作都可以正常进行,就是关闭程序后有前面哪行异常,不知道线程出错到哪里了。
...全文
14 点赞 收藏 回复
写回复
回复

还没有回复,快来抢沙发~

发动态
发帖子
脚本语言(Perl/Python)
创建于2007-08-27

1.5w+

社区成员

3.3w+

社区内容

其他开发语言 脚本语言(Perl ,Python)
社区公告
暂无公告