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

news/2025/10/31 10:57:42/文章来源:https://www.cnblogs.com/nxhujiee/p/19179167

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


完整代码(使用 .perform_long_operation()

import PySimpleGUI as sg
import math
import timedef 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 = sg.ThreadSafeEvent()  # 线程安全的事件对象layout = [[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)# 使用 perform_long_operation 启动后台任务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()

关键改进说明

  1. .perform_long_operation() 的作用

    • 自动在后台线程中执行 calculate_sqrt_sum()
    • 任务完成后触发 -COMPLETED- 事件,并通过 values[event] 返回结果
    • 无需手动管理线程的启动和停止
  2. 线程安全的事件对象

    • 使用 sg.ThreadSafeEvent() 替代 threading.Event(),确保线程安全
  3. 简化的流程

    • 点击"开始" → 启动后台任务 → 任务自动在独立线程中运行
    • 任务完成或取消后,通过 -COMPLETED- 事件通知主线程
  4. 取消任务的处理

    • 设置 stop_event 后,后台任务会在下一次循环检查时退出
    • 返回 None 表示任务被取消

对比 .start_thread() 的优势

特性 .perform_long_operation() .start_thread()
线程管理 自动处理 需手动管理
回调机制 内置(通过事件名) 需手动写事件处理
返回值传递 支持 需额外事件传递
代码复杂度 更低 较高

适用场景

  • 推荐使用 .perform_long_operation()

    • 需要简单后台任务+回调的场景
    • 希望减少线程管理代码
    • 需要直接获取返回值
  • 保留 .start_thread() 的场景

    • 需要同时运行多个独立线程
    • 需要更精细的线程控制(如守护线程)

这个版本更符合 PySimpleGUI 的设计理念,代码更简洁且易于维护。

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

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

相关文章

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

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

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

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

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

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

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

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

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

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

qoder,webstorm+通义灵码, trae,codebuddy的使用心得

qoder,webstorm+通义灵码, trae,codebuddy的使用心得不要说哪个更好,有时一个功能此qoder改了几次不成功,就换个,可能就解决了. 比如一个行内下拉,trae给生成了, 结果存在问题 使用qoder修改,当然是在原基础上修改,改了…

2025年可靠的透气三明治网布厂家最新TOP排行榜

2025年可靠的透气三明治网布厂家最新TOP排行榜 透气三明治网布因其独特的结构(三层或多层复合设计)和优异的性能(透气、轻量、弹性、耐磨),被广泛应用于运动鞋材、服装、箱包、汽车内饰等领域。随着市场需求的增…

Ubuntu 中的 AppArmor

好的,我们来详细介绍一下 Ubuntu 中的 AppArmor。 1. AppArmor 是什么? AppArmor是一个内置于 Linux 内核的强制访问控制系统。可以把它理解成一个应用程序的“安全带”或“安全监狱”。它的核心思想是 “只允许程序…

2025年AI在线客服新标准:如何用智能知识库实现724小时精准服务

2025年AI在线客服新标准:如何用智能知识库实现724小时精准服务在客户服务需求日益多元化的2025年,传统客服模式正面临严峻挑战。数据显示,超过60%的客户咨询集中在重复性问题,而夜间、节假日等非工作时段的服务缺口…

2025年口碑好的高速旋转接头行业内知名厂家排行榜

2025年口碑好的高速旋转接头行业内知名厂家排行榜 行业概述 高速旋转接头作为工业设备中的关键部件,广泛应用于航天、钢铁、造纸、化工等领域,其性能直接影响设备的稳定性和生产效率。随着工业自动化水平的提升,市…

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

随着社会结构的多元化发展,婚姻家事案件正呈现类型复杂化、标的额增大、涉外因素增多等特点。根据近年的司法数据,涉及股权分割、跨境财产、复杂债务认定的离婚纠纷占比逐年提升。选择一家专业、经验丰富的婚姻家事律…

2025年比较好的地磅高评价厂家推荐榜

2025年比较好的地磅高评价厂家推荐榜在工业称重领域,地磅作为重要的计量设备,其质量与性能直接影响企业的运营效率和成本控制。随着2025年工业4.0技术的深入发展,智能化、高精度的地磅需求日益增长。本文将为您推荐…

2025年知名的铝方通格栅厂家最新权威推荐排行榜

2025年知名的铝方通格栅厂家最新权威推荐排行榜铝方通格栅作为现代建筑装饰的重要材料,因其轻量化、耐腐蚀、易安装和美观大方的特点,在商业综合体、办公楼、机场车站等场所广泛应用。随着建筑行业对环保、节能和美观…

win10+ubuntu24 双系统

nano /etc/default/grub GRUB_TIMEOUT_STYLE=menuGRUB_TIMEOUT=5 update-grubreboot

2025年阻燃14mm尼龙隔热条厂家最新推荐排行榜

2025年阻燃14mm尼龙隔热条厂家最新推荐排行榜 随着建筑节能标准的不断提高,尼龙隔热条作为门窗幕墙的核心组件,其阻燃性、耐候性和尺寸稳定性成为行业关注焦点。2025年,具备14mm规格阻燃尼龙隔热条生产能力的厂家竞…

CF1795E Explosions?

这个题唯一有价值的地方就是引导我们思考题目的一些性质。 尝试描述一下怎样才能操作 \(i\) 使得连锁反应炸掉所有数,观察操作性质,应该是以 \(i\) 作为峰的严格单峰序列才行。 我们先考虑一个前缀,设 \(f_i\) 为以…

2025年如何安装全自动环形绕线机用户口碑最好的厂家榜

2025年如何安装全自动环形绕线机用户口碑最好的厂家榜 开篇介绍 随着工业4.0的深入发展,全自动环形绕线机在变压器、电感线圈、电机等领域的应用越来越广泛。2025年,智能化、高效率、高精度的绕线设备将成为市场主…

nvm pnpm 多版本命令

nvm pnpm 多版本命令source ~/.nvm/nvm.shnvm use 20.19.0corepack enable && corepack prepare pnpm@9.5.0 --activate docker build -t langfuse_web-hjtest:20.19.0-pnpm9.5.0 . cd /root/web_build/lan…

2025年优质的BR型板式换热器厂家最新用户好评榜

2025年优质的BR型板式换热器厂家最新用户好评榜 引言 在工业制造、化工、能源、暖通等领域,板式换热器作为高效的热交换设备,其性能和质量直接影响生产效率和能源利用率。BR型板式换热器因其紧凑结构、高效传热、易…

2025年比较好的高压保温风机厂家最新权威实力榜

2025年比较好的高压保温风机厂家最新权威实力榜 在工业通风领域,高压保温风机因其高效节能、耐高温、防腐蚀等特性,广泛应用于化工、冶金、电力、环保等行业。随着市场需求的增长,选择一家技术实力强、口碑优良的厂…