pyinstaller打包多线程pyqt5程序后,报错,反复弹窗等问题

报错1:
Traceback (most recent call last):
File “MPL.py”, line 502, in
File “Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_multiprocessing.py”, line 45, in _freeze_support
ValueError: not enough values to unpack (expected 2, got 1)

报错2:
!!! Traceback (most recent call last):
File “MPL_0.py”, line 46, in run
File “MPL\Master.py”, line 177, in train
File “MPL\Model_interpretation.py”, line 85, in call
File “MPL\Model_interpretation.py”, line 147, in gini_perm
File “sklearn\utils_param_validation.py”, line 213, in wrapper
File “sklearn\inspection_permutation_importance.py”, line 292, in permutation_importance
File “sklearn\utils\parallel.py”, line 67, in call
File “joblib\parallel.py”, line 1854, in call
File “joblib\parallel.py”, line 1332, in _initialize_backend
File “joblib_parallel_backends.py”, line 550, in configure
File “joblib\executor.py”, line 20, in get_memmapping_executor
File “joblib\executor.py”, line 42, in get_memmapping_executor
File “joblib_memmapping_reducer.py”, line 535, in init
File “joblib_memmapping_reducer.py”, line 539, in set_current_context
File “joblib_memmapping_reducer.py”, line 564, in register_new_context
File “joblib_memmapping_reducer.py”, line 580, in register_folder_finalizer
File “joblib\externals\loky\backend\resource_tracker.py”, line 178, in register
File “joblib\externals\loky\backend\resource_tracker.py”, line 95, in ensure_running
File “joblib\externals\loky\backend\resource_tracker.py”, line 170, in _check_alive
File “joblib\externals\loky\backend\resource_tracker.py”, line 197, in _send
OSError: [Errno 22] Invalid argument !!!

这个错误信息显示了在运行一个使用 joblibsklearn(scikit-learn)的机器学习管道时遇到的问题。具体来说,错误发生在计算模型特征重要性时,更准确地说是在使用 permutation_importance 函数时。此问题似乎涉及到 joblib 在尝试使用它的内存映射(executor)功能进行并行计算时的资源跟踪器。

错误 “OSError: [Errno 22] Invalid argument” 指示了某种形式的无效参数被传递到系统调用中。这可能是由多种原因造成的,包括但不限于:

  1. 环境问题: 可能与你的操作系统或环境设置有关,尤其是涉及文件系统和权限的。

  2. 资源限制: 系统资源限制(如文件描述符数量、内存等)可能导致此错误。

  3. joblib的版本问题: 某些版本的 joblib 可能与其他库不兼容或存在已知的bug。

要解决这个问题,你可以尝试以下方法:

  • 环境检查: 确保你的操作系统和环境配置正确。如果你在容器(如Docker)中运行代码,确保容器配置允许足够的资源使用并正确配置了临时文件存储。

  • 更新库: 确保所有相关的库,包括 joblibsklearn,都更新到最新版本。不同版本之间的不兼容可能会导致奇怪的错误。

    pip install --upgrade joblib scikit-learn
    
  • 资源限制: 检查你的系统资源限制,尤其是如果你在一个受限或共享资源的环境下工作。在某些系统上,你可能需要调整ulimit设置或类似的配置来增加可用资源。

  • 简化问题: 尝试简化代码以隔离问题。例如,先用非常小的数据集运行代码,看看问题是否仍然存在。

  • 并行设置: 如果使用 joblib 进行并行处理,尝试调整并行执行的参数,比如减少并行工作的数量。这有时可以避免资源竞争或限制导致的问题。

    from sklearn.inspection import permutation_importance
    
    # 减少n_jobs的数量
    result = permutation_importance(model, X, y, n_jobs=1)
    
  • 探索替代方案: 如果可能,探索替代的实现方法。虽然 permutation_importance 提供了一种方便的方式来评估特征的重要性,但也许你可以找到或实现一个更适合你特定环境的方法。

如果上述方法都不能解决问题,建议查阅 joblibsklearn 的文档或社区寻求更具体的帮助,可能需要更深入的调查来解决这个问题。

**

以上两次错误是在打包pyqt5中包含QThread情况下使用pyinstaller打包后运行exe文件时遇到的,具体错误原因不详,但已经通过两个方法合并修改得以解决:

**

方法一(参考多线程打包):利用Pyinstaller打包一个完整的python项目及注意事项

方法二: 就是上面提到的,修改“并行设置”,将permutation_importance(model, X, y, n_jobs=1)中的n_jobs值改为1,这样来避免窗体外的线程触发(如图)。
在这里插入图片描述
上面这个图示就是我当时代码的问题位置,里面的n_jobs为2,我改为1之后,就避免了窗体外线程触发,这也是导致反复弹窗和导致内存资源不足的原因

如果你也遇到同我一样的问题,并能得到我的帮助,是我的荣幸。

最后,也请不吝赐赞,谢谢!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32学习笔记(10_3)- 软件I2C读写MPU6050

无人问津也好,技不如人也罢,都应静下心来,去做该做的事。 最近在学STM32,所以也开贴记录一下主要内容,省的过目即忘。视频教程为江科大(改名江协科技),网站jiangxiekeji.com 本期开…

分布式之分布式事务详解

分布式事务与实战运用 什么是分布式事务? 业务场景:用户A转账100元给用户B,这个业务比较简单,具体的步骤: 1、用户A的账户先扣除100元 2、再把用户B的账户加100元 如果在同一个数据库中进行,事务可以保证…

C语言之Linux内核回调函数写法(八十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

论文阅读,Accelerating the Lattice Boltzmann Method(五)

目录 一、Article:文献出处(方便再次搜索) (1)作者 (2)文献题目 (3)文献时间 (4)引用 二、Data:文献数据(总结归纳,方便理解&am…

Nginx的反向代理

Nginx的反向代理 location ^~ /aaa {proxy_pass http://192.168.15.78/; } 1. 跨域 2.Nginx 代理服务器缓存 3.Nginx 负载均衡 4. 动静分离 Nginx的跨域 跨源资源共享 (CORS) 是一种机制,它使用额外的 HTTP 标头让用户代理获得访问来自不同来域的服务器上选定资…

LongAdder 和 AtomicLong

有幸看到一篇关于这个讲解 2个类的讲解,自己也归纳总结一下。 一、解析 看源码底层会发现实现机制不一样,当然这个也是必须的 LongAdder 点进去之后会发现,CAS 它是一个CAS的实现类。至于Cell类JVM提供的内置函数 官方说法是:…

Python版【植物大战僵尸 +源码】

文章目录 写在前面:功能实现环境要求怎么玩个性化定义项目演示:源码分享Map地图:Menubar.py主菜单 主函数:项目开源地址 写在前面: 今天给大家推荐一个Gtihub开源项目:PythonPlantsVsZombies,翻译成中就是…

小程序开发调试指南

调试指南 一、Vconsole 一些线上问题需要在真机中进行调试或日志输出,为方便查看前端日志的输出,App 端提供了调试模式, 打开调试模式后面板界面中会显示 vConsole 按钮,点击后可打开手机端 vConsole界面查看日志输出。 1.如何开启 点击小…

JumpServer 堡垒主机

JumpServer 堡垒机帮助企业以更安全的方式管控和登陆各种类型的资产 SSH:Linux/Unix/网络设备等Windows:Web方式连接/原生RDP连接数据库:MySQL、Oracle、SQLServer、PostgreSQL等Kubernetes:连接到K8s集群中的PodsWeb站点&#x…

复现黄金票据

一、搭建环境 搭建域环境可以点击这个查看步骤 在这里面monowall的配置查看 二、实验步骤 拿到域名 拿到SID 使用mimikatz拿到krbtgt用户的哈希 删除票据 也可以使用mimikatz.exe删除票据,命令是kerberos::purge 伪造票据 拿到域控 伪造成功

物联网实战--入门篇之(六)嵌入式-WIFI驱动(ESP8266)

目录 一、WIFI简介 二、基础网络知识 三、思路讲解 四、代码分析 4.1 状态机制 4.2 客户端连接 4.3 应用数据接收处理 4.4 数据发送 4.5 主函数调用 4.6 网络连接ID分配 五、总结 一、WIFI简介 WIFI在我们生活中太常见了,手机电脑都可以用WiFi连接路由器进行上…

MySQL核心命令详解与实战,一文掌握MySQL使用

文章目录 文章简介演示库表创建数据库表选择数据库删除数据库创建表删除表向表中插入数据更新数据删除数据查询数据WHERE 操作符聚合函数LIKE 子句分组 GROUP BY HAVINGORDER BY(排序) 语句LIMIT 操作符 分页查询多表查询-联合查询 UNION 操作符多表查询-连接的使用-JOIN语句编…

从0到1手把手撸码搭建后台管理系统

从0到1手把手撸码搭建后台管理系统 第一章:系统介绍开发目的与过程 要使用 Vue3 搭建后台,你可以按照以下步骤进行: 安装 Vue3:使用包管理工具(如 npm 或 yarn)安装 Vue3。选择构建工具:选择一个适合的构…

Spring之循环依赖

什么是循环依赖? 依赖的相互引用,如下列的这种形式 Component public class A {Autowiredprivate B b;}Component public class B {Autowiredprivate A a; } Spring是如何解决循环依赖的 Spring是通过三级缓存来解决循环依赖 singletonObjects : 单例bean,已经实例化,完成…

非周期连续函数的傅里叶变换

首先 我们把一个非周期信号扩展成一个周期信号 然后用傅里叶级数展开 也可以得到对应的级数系数 利用周期趋向于无穷大 可以把傅里叶级数展开就变成了一个积分 而神奇的是积分里其实还有一个积分 这样我们就得到了傅里叶变换对 我们把里面的积分成为函数的傅里叶变换 把外面…

C语言交换二进制位的奇数偶数位

基本思路 我们要先把想要交换的数的二进制位给写出来假如交换13的二进制位,13的二进制位是 0000 0000 0000 0000 0000 0000 0000 1101然后写出偶数位的二进制数(偶数位是1的) 1010 1010 1010 1010 1010 1010 1010 1010然后写出奇数位的二进…

Mac通过Idea启动Tomcat时出现Cannot run program xxx/catalina.sh 错误

问题描述 Mac通过Idea启动Tomcat时出现Cannot run program xxx/catalina.sh错误,详细如下: Error running Tomcat9 Cannot run program "/Users/xxx/Desktop/work/devtools/apache-tomcat-9.0.19/bin/catalina.sh" (in directory "/U…

算法设计课第一周(排序算法的效率分析)

实验1 排序算法的效率分析 一、【实验目的】 (1)复习排序算法的实现过程; (2)设计平均与最坏情况下时间复杂度的数据环境并理解相关含义; (3)初步了解算法时间复杂度的分析方法。…

FlashFace:一种高保真身份保存的人类形象个性化方法

FlashFace技术是由香港大学、阿里巴巴集团、蚂蚁集团共同研发的一项实用工具,用户可以通过提供一张或几张参考面部图像和文本提示,就可以轻松地即时个性化自己的相片。 与现有的人像定制方法相比,FlashFace方法具有更高保真度的身份保留xi性…

【spring】Spring Cloud Alibaba版本发布说明

Spring Cloud Alibaba版本发布说明 由于 Spring Boot 3.0,Spring Boot 2.7~2.4 和 2.4 以下版本之间变化较大,目前企业级客户老项目相关 Spring Boot 版本仍停留在 Spring Boot 2.4 以下,为了同时满足存量用户和新用户不同需求,社…