庞大的二进制文件和缓慢的执行

guicsvcw  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(293)

我正在尝试将python脚本转换为已编译的exe,以便能够分发到多个客户端。我以前从未尝试过这样做,所以对于分布式文件的大小等问题,我不确定会发生什么。
脚本的一个示例(精简版)版本是:

import matplotlib.pyplot as plt

group_size=[10]
subgroup_size=[10,10,10,10,10,10,10,10,10]

a, b, c, d,e,f,g,h,i =[plt.cm.Blues,plt.cm.Blues,plt.cm.Blues, plt.cm.Reds,plt.cm.Reds,plt.cm.Reds, plt.cm.Greens,plt.cm.Greens,plt.cm.Greens]

fig, ax = plt.subplots()
ax.axis('equal')
mypie, _ = ax.pie(group_size, radius=3, colors= [a(0.90)],startangle=90 )
plt.setp( mypie, width=0.5, edgecolor='black')

# Second Ring (Inside)

mypie2, _ = ax.pie(subgroup_size, radius=3-0.5,  colors=[a(.9), b(0.2), c(0.2),d(.2),e(.2),f(.2),g(.9),h(.2),i(.2)],startangle=90,counterclock=False)
plt.setp( mypie2, width=0.5, edgecolor='black')
plt.margins(0,0)

mypie3, _ = ax.pie(subgroup_size, radius=3-1.0,  colors=[a(.9), b(0.8), c(0.6),d(.2),e(.6),f(.2),g(.9),h(.7),i(.2)],startangle=90,counterclock=False)
plt.setp( mypie3, width=0.5, edgecolor='black')
plt.margins(0,0)

mypie4, _ = ax.pie(subgroup_size, radius=3-1.5, colors=[a(.9), b(0.8), c(0.6),d(.2),e(.6),f(.4),g(.9),h(.7),i(.5)],startangle=90,counterclock=False)
plt.setp( mypie4, width=0.5, edgecolor='black')
plt.margins(0,0)

mypie5, _ = ax.pie(subgroup_size, radius=3-2,  colors=[a(.9), b(0.8), c(0.6),d(.8),e(.6),f(.4),g(.9),h(.7),i(.5)],startangle=90,counterclock=False)
plt.setp( mypie5, width=0.5, edgecolor='black')
plt.margins(0,0)

mypie6, _ = ax.pie(subgroup_size, radius=0.5,  colors=[a(.999)],startangle=90,counterclock=False)
plt.setp( mypie6, width=0.9, edgecolor=a(0.999))
plt.margins(0,0)

# show it

plt.show()

它没有做任何聪明的事情——根据屏幕截图绘制嵌套的饼图

将pyinstaller与“pyinstaller--onefile--windowed--clean wheel.py”一起使用,这将成功编译为可执行的windows二进制文件,如第二个屏幕截图所示。

但是,二进制文件大小为330mb,加载/启动大约需要20秒(我很感激exe正在卷起python解释器-因此大小可能是它的大小)
我的问题:
(1) 有没有“更好”(即更小的二进制文件/更快的加载)的方法来做到这一点((2)有没有更好的方法来部署用python编写的应用程序?
(我使用python就像广泛使用matplotlib生成修改后的嵌套饼图一样,这已被证明是最可靠的)。遗憾的是,我无法让我的客户机安装python——单文件安装是最低的入门门槛。
收到的任何指示。
编辑:因此,文件大小由python解释器决定——相同的二进制大小是使用tkinter创建自己的gui时创建的。

vkc1a9a2

vkc1a9a21#

因此,“问题”似乎正在编译成一个文件。每次执行exe文件时都会解压缩此文件。因此,删除--onefile可以加快执行速度。现在我需要一个安装程序文件!!

相关问题