sg.后台线程-1亿浮点运算用时-方法2

news/2025/10/31 11:09:15/文章来源:https://www.cnblogs.com/nxhujiee/p/19179211
import PySimpleGUI as sg
import math
import time
import threading  # 改用标准库的 threading.Eventdef calculate_sqrt_sum(window, stop_event):"""后台计算函数"""total = 10_000_000sum_result = 0.0start_time = time.time()try:for i in range(1, total + 1):if stop_event.is_set():  # 检查是否被取消return None  # 返回 None 表示计算被取消sum_result += math.sqrt(i)# 每 100 万次更新一次进度if i % 1_000_000 == 0 or i == total:progress = i / total * 100elapsed = time.time() - start_timewindow.write_event_value('-UPDATE-', (progress, sum_result, elapsed))return (sum_result, time.time() - start_time)  # 返回结果和总用时except Exception as e:window.write_event_value('-ERROR-', str(e))return Nonedef main():stop_event = threading.Event()  # 使用 threading.Event 替代 sg.ThreadSafeEventlayout = [[sg.Text('计算 1000 万以内平方根之和')],[sg.ProgressBar(100, key='-PROGRESS-', size=(30, 20))],[sg.Multiline('', size=(40, 5), key='-OUTPUT-', autoscroll=True)],[sg.Text('结果:'), sg.Input('', key='-RESULT-', disabled=True)],[sg.Button('开始'), sg.Button('停止'), sg.Button('退出')]]window = sg.Window('多线程计算示例', layout, finalize=True)while True:event, values = window.read()if event in (sg.WIN_CLOSED, '退出'):stop_event.set()  # 通知线程停止breakelif event == '开始':window['-PROGRESS-'].update(0)window['-RESULT-'].update('')window['-OUTPUT-'].update('计算中...\n')stop_event.clear()window['开始'].update(disabled=True)window['停止'].update(disabled=False)# 启动后台任务window.perform_long_operation(lambda: calculate_sqrt_sum(window, stop_event),'-COMPLETED-')elif event == '停止':stop_event.set()  # 通知线程停止window['-OUTPUT-'].print('\n尝试停止计算...')window['停止'].update(disabled=True)elif event == '-UPDATE-':progress, result, elapsed = values[event]window['-PROGRESS-'].update(int(progress))window['-OUTPUT-'].print(f'进度: {progress:.1f}%, 已用时: {elapsed:.2f}秒')elif event == '-COMPLETED-':result = values[event]  # 获取后台任务的返回值if result is None:window['-OUTPUT-'].print('\n计算被取消或出错')else:sum_result, elapsed = resultwindow['-RESULT-'].update(f'{sum_result:.2f}')window['-OUTPUT-'].print(f'\n计算完成! 结果: {sum_result:.2f}, 总用时: {elapsed:.2f}秒')window['开始'].update(disabled=False)elif event == '-ERROR-':sg.popup_error(f'错误: {values[event]}')window['开始'].update(disabled=False)window.close()if __name__ == '__main__':main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/951571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年混合机厂家最新推荐排行榜:高效盘条式无重力犁刀式锥形卧式螺带连续式等机型优选企业测评结果及核心优势解析

引言 为助力企业精准选购混合机设备,粉体设备行业协会联合专业测评机构开展 2025 年混合机品牌测评工作。本次测评覆盖全国 68 家主流混合机生产企业,采用 “技术实力 + 产品性能 + 服务质量 + 市场口碑” 四维评分体…

note 2

在《程序员修炼之道》“注重实效的途径” 章节中,DRY 原则(Dont Repeat Yourself)和正交性原则,为构建灵活可维护的系统提供了关键方法论。DRY 原则强调 “系统中的每一项知识都必须具有单一、无歧义、权威的表示”…

基于机载相控阵天线的卫星通信链路预算示例:(一) - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年上海继承律师权威推荐榜单:离婚房产律所/离婚律所/继承律所精选服务商

随着上海家庭财富积累和人口老龄化程度加深,遗产继承案件呈现逐年上升趋势。据上海市法院系统统计,2024年继承纠纷一审案件数量较上年增长12.7%,其中涉及房产分割的继承案件占比高达68%。 在复杂的继承法律案件中,…

基于MATLAB的MFCC特征与高斯混合模型(GMM)语音识别系统

一、系统设计 1. 核心流程 graph TDA[语音采集] --> B[预处理]B --> C[MFCC特征提取]C --> D[GMM模型训练]D --> E[分类识别]B -->|预加重| B1[高通滤波]B -->|分帧加窗| B2[汉明窗]C -->|Mel滤波…

安装Helm

安装包地址:https://get.helm.sh/helm-v3.16.0-linux-amd64.tar.gz 将安装包上传至服务器解压 tar -xf helm-v3.16.0-linux-amd64.tar.gz cd linux-amd64将helm移到/usr/local/bin/目录 mv helm /usr/local/bin/执行h…

vdi镜像转换vmdk虚拟磁盘文件

qemu-img.exe convert -p -f vdi -O vmdk XXXXX.vdi XXXXXX.vmdk -p:表示镜像转换的进度。 -f:后面为源镜像格式 -O:(必须是大写)后面的参数由如下3个部分组成:转换出来的镜像格式 + 源镜像文件名称 + 目标文件…

2025 CSP/NOIp 复习

csp2025 rp++!1.Manacher点击查看代码 //manacher板子 求子串最长回文串的长度 #include<bits/stdc++.h> using namespace std; const int maxn=1.1e7+10; string s; int pal[2*maxn],ans; //pal表示以第i个字…

卐 comes from where?

The religions of the Japanese are mainly Buddhism and Shinto before the war. Shinto is also a form of sun worship. Germany knows the cruelty of the West, so they use a sign from the Far Far East. Just …

pypdf内存耗尽漏洞分析:恶意LZWDecode流可导致资源耗尽

本文详细分析了CVE-2025-62708漏洞,攻击者可通过精心构造的LZWDecode流使pypdf库消耗大量内存,影响系统可用性。该漏洞已在pypdf 6.1.3版本中修复,用户应及时升级。漏洞详情 概述 pypdf库存在一个中等严重程度的漏洞…

火山引擎多模态数据湖解决方案,以新一代数据基座迎接AI Agent时代

2025年,随着智能体(AI Agent)成为人工智能领域的核心焦点,企业对其应用需求持续深化,但通用工具向专业决策智能体的升级面临数据基础设施的系统性挑战。火山引擎推出的多模态数据湖解决方案,通过存储、计算与管理…

094_尚硅谷_for循环课堂练习

094_尚硅谷_for循环课堂练习1.打印1~100质检9的倍数的整数的个数以及总_写法12.打印1~100质检9的倍数的整数的个数以及总_写法23.打印指定输出表达式

深入解析:Spring Cloud Netflix Ribbon:微服务的客户端负载均衡利器

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

使用kubeasz离线安装K8S

1、下载离线包 找一台能够联网的机器下载所需安装包 下载工具脚本ezdown,举例使用kubeasz版本3.6.0 export release=3.6.0 wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown chmod +x .…

sg_后台线程运行函数:.perform_long_operation(func, callback)

在 PySimpleGUI 中,.perform_long_operation() 是一个专门用于 后台长时间运行任务 的方法,它会自动处理线程的创建和回调,比手动使用 start_thread() 更简洁。以下是使用 .perform_long_operation() 重写的示例:完…

2025年佛山短视频运营制作公司推荐:五家服务商权威测评

在佛山,想要寻找靠谱的短视频运营与制作公司?本文将为你深度剖析五家行业内颇具实力的公司,帮你精准避坑,选出适合的合作伙伴,解决短视频运营公司选哪家短视频制作公司哪家合适短视频制作公司哪家可靠等难题。 TO…

小程序设计的底层逻辑:兰亭妙微谈 “轻产品” 如何赢得 “重体验”

小程序设计的底层逻辑:兰亭妙微谈 “轻产品” 如何赢得 “重体验”小程序的核心特质是 “轻”—— 无需下载安装、打开速度快、功能聚焦,但 “轻产品” 不等于 “浅体验”。很多团队陷入误区:要么追求 “功能全” 导…

2025年上海离婚房产律所权威推荐榜单:离婚律所/房产律所/婚姻律所源头服务商精选

随着上海离婚案件数量逐年攀升,房产作为家庭核心财产的分割问题成为争议焦点。据上海市法院系统统计,2024年离婚案件中涉及房产分割的比例高达67%,平均每起案件涉及房产价值485万元。 在复杂的离婚房产分割案件中,…

2025年有实力的环保移动厕所厂家最新推荐权威榜

2025年有实力的环保移动厕所厂家最新推荐权威榜 随着城市化进程的加快和环保意识的提升,移动厕所作为城市基础设施的重要组成部分,市场需求持续增长。环保移动厕所不仅解决了公共场所的如厕难题,还能实现资源循环利…

2025年比较好的大型方便面生产线厂家推荐及采购指南

2025年比较好的大型方便面生产线厂家推荐及采购指南 随着方便食品市场的持续增长,大型方便面生产线的需求也在逐年攀升。无论是传统油炸方便面,还是新兴的非油炸、波纹面等产品,高效、智能的生产设备都是企业提升竞…