

一、为什么需要采用multiprocessing多线程技术
自己在做最新文件Hash校验工具V1.0小工具软件时,需要读取文件,计算文件的MD5、SHA1、SHA256和CRC32这些Hash值,对于小文件能够很快计算出hash值,但是对于大文件需要花费一些时间,不知道进度如何?使用进度条指示也无法正确显示进度。后来经过查询资料,使用了multiprocessing多线程技术,这个问题得以解决,记录下自己的一些心得体会。
号主强烈推荐这款文件Hash校验工具,不仅能够计算出文件Hash信息,而且还有Hash目标值校验功能,省去人工比对的繁琐,操作简单,使用方便!


下载地址:
1.百度网盘衔接:
链接:https://pan.baidu.com/s/1IZ7JcNYEVjeX--gPv1LRIw提取码:bh6v
2.阿里云盘衔接:
https://www.aliyundrive.com/s/zAjyK9T1bDA
二、Python利用multiprocessing实现多进程
下面贴出我测试多线程的部分代码:
main.py
"""python主文件"""# -*- coding: utf-8 -*-import sysfrom PyQt5.QtWidgets import QApplication, QMainWindow, QDesktopWidgetimport multiprocessingimport timeimport MyQTMainForm # 导入MyQTMainForm.py文件def coding(language):"""子进程要执行的代码"""for i in range(5):print("{} coding".format(language), end=' | ')time.sleep(1)class MyPyQTMainForm(QMainWindow, MyQTMainForm.Ui_MainWindow):"""主界面"""def __init__(self):"""初始化"""super(MyPyQTMainForm, self).__init__()self.setupUi(self)def center(self):"""定义一个函数使得窗口居中显示"""# 获取屏幕坐标系screen = QDesktopWidget().screenGeometry()# 获取窗口坐标系size = self.geometry()newLeft = (screen.width() - size.width()) 2newTop = (screen.height() - size.height()) 2self.move(int(newLeft), int(newTop))def myBtnBrowse(self):"""单击“浏览”按钮消息处理函数"""# 单进程start = time.time()coding('python')for i in range(5):print("主程序", end=' | ')time.sleep(1)end = time.time()print('\n单进程花费时间:', end - start)# 多进程multi_start = time.time()p = multiprocessing.Process(target=coding, args=('python',))p.start()for i in range(5):print("主程序", end=' | ')time.sleep(1)multi_end = time.time()print('\n多进程花费时间:', multi_end - multi_start)"""=====================================主函数====================================="""if __name__ == '__main__':# 使用多进程需要在此处添加multiprocessing.freeze_support()app = QApplication(sys.argv)# 创建主窗口对象myPyMainForm = MyPyQTMainForm()# 主窗口显示在屏幕中间myPyMainForm.center()# 显示主界面myPyMainForm.show()sys.exit(app.exec_())
运行效果:


# 使用多进程需要在此处添加multiprocessing.freeze_support()
效果如下:
"""=====================================主函数====================================="""if __name__ == '__main__':# 使用多进程需要在此处添加multiprocessing.freeze_support()"""这里是你的代码"""# ......
四、PyQt5在对话框中打开外部链接的方法
利用PyQt5部分控件的Link属性链接
PyQt5有几个控件带有 setOpenExternalLinks , 如 QLabel、QTextLabel 、 QTextBrowser 等
当 setOpenExternalLinks 值为TURE 表示可通过html 添加 A 标签打开外部链接, 如设置:
self.label.setOpenExternalLinks(True)self.label.setText(u'<a href="https://datutu.blog.csdn.net/" style="color:#0000ff;"><b> 我的CSDN博客 </b></a>')
效果如下图:

文章转载自捷创源科技,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




