5.打包涉及多进程、多线程、wmi处理方式


一、多进程

多进程打包需要在入口位置加入一行代码,在pyinstaller打包才能够有效打包。nuitka不需要。

from multiprocessing import freeze_support
freeze_support()

二、生命周期维持

不论多进程还是多线程,建议采用生命周期维持方法,不然可能出现运行异常情况。生命周期维持其实就是保证当前运行多线程、多进程的函数退出后,多线程(多进程)创建的变量被保存在上一层调用方法之中,以此类推。

二、nuitka打包win32com(wmi)

用到win32api的打包比较麻烦。在入口程序加入:

import wmi

nuitka打包让其他打包进来,把’win32api’下面语句中去除:

--recurse-all --recurse-not-to=win32api

三、windows7下多线程调用win32com(wmi)

在windows10 使用多线程调用win32com相关的功能,运行没有问题,回到家用windows7环境运行就报:

PyQt QBasicTimer::stop: Failed. Possibly trying to stop from a different thread

解决办法:在线程类中的run函数中开头和结尾加入以下信息:

	def run(self):
		pythoncom.CoInitialize()
		try:
			pass # 线程实际执行代码
		excpt:
			pass
			
		#释放资源
    	pythoncom.CoUninitialize()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿飞哥666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值