发布于2021-07-25 06:53 阅读(876) 评论(0) 点赞(17) 收藏(3)
python的多线程其实不是真正的多线程,只是个并发而已。一旦执行真正的耗时操作(非sleep操作),就会卡住。
要实现真正的多线程,有两个方法(暂时知道的):
一、用多进程
参考:
多线程,多进程的用法
进程间通讯
但是,利用多进程的方式,交换数据会很麻烦(需要用到队列、管道等方式)。
二、用QThread。
幸亏,有个简单的方式,那就是用Qt的QThread。
QThread实现的多线程,从目前的的测试来看,的确是起到了多线程的作用。
星号(*、**)的妙用
from PyQt5.QtCore import QThread
class TrainThread(QThread):
def __init__(self, target, args):
super(TrainThread, self).__init__()
print('init thread')
self.target = target
self.args = args
def run(self):
# self.target(self.args[0], self.args[1], self.args[2])
self.target(*self.args)
t = None
class ModelClass():
def trainModel(self, trainData, evaluate, epochs):
"""
训练模型接口
:param trainData: 训练模型的数据
:param evaluate: 评估模型的数据
:param epochs: 训练模型的总次数
:return:
"""
# 直接执行的话,会卡住主线程,卡到定时器都停止工作。
# self.model.train(trainData=trainData, testData=evaluate, epochs=epochs)
# 通过多线程的方式来启动,就好很多
global t
t = TrainThread(target=self.model.train, args=(trainData, evaluate, epochs))
t.start()
原文链接:https://blog.csdn.net/joyopirate/article/details/119033195
作者:机甲战士
链接:http://www.pythonpdf.com/blog/article/522/76dd33bf9c4c38784267/
来源:编程知识网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!