在tool.py代码脚本下面,同时使用cmd运行该代码
tool.py命令,它100%成功运行。
当我试图在cmd中使用pyarmor命令打包代码时
pyarmor -e“-onefile”tool.py
然后我运行exe文件,当我按submit按钮时,它会显示win00窗口,首先它开始运行代码。
但是在运行它的过程中,它再次显示tkinter win00窗口,这将停止第一段代码的运行。
Func00和Func01包括多处理过程,每个Func包含5个进程。
tool.py
import tkinter as tk
from deployedFunc00 import *
from deployedFunc01 import *
def button_fn():
if clicked.get() == 'func00':
if __name__ == '__main__':
Func00()
else:
if __name__ == '__main__':
Func01()
def show():
label_.config(text=clicked.get())
if __name__ == '__main__':
win00 = tk.Tk()
win00.geometry("300x300")
win00.eval('tk::PlaceWindow . center')
frame00 = tk.Frame(win00)
frame00.pack_propagate(0)
frame00.pack(fill=tk.BOTH, expand=1)
options = ['func00','func01']
clicked = tk.StringVar()
clicked.set('func00')
drop = tk.OptionMenu(frame00, clicked, *options)
drop.pack()
label_ = tk.Label(frame00, text=" ")
label_.pack()
button0 = tk.Button(frame00,text="choose",command=show).pack()
button1 = tk.Button(frame00,text='submit',command= button_fn)
button1.pack(side=tk.BOTTOM,pady=(0,10))
win00.mainloop()deployedFunc00.py
import multiprocessing
from func05 import *
def Func00():
LENGTH = 5
jobs = []
for n in range(LENGTH):
globals()['p_%s' %n] = multiprocessing.Process(target = Func05)
for n in range(LENGTH):
jobs.append(globals()['p_%s' %n])
for n in range(LENGTH):
globals()['p_%s' %n].start()
for proc in jobs:
proc.join()deployedFunc01.py
import multiprocessing
from func06 import *
def Func01():
LENGTH = 5
jobs = []
for n in range(LENGTH):
globals()['p_%s' %n] = multiprocessing.Process(target = Func06)
for n in range(LENGTH):
jobs.append(globals()['p_%s' %n])
for n in range(LENGTH):
globals()['p_%s' %n].start()
for proc in jobs:
proc.join()发布于 2022-09-11 20:11:45
最后我找到了一个解决方案:只需
multiprocessing.freeze_support()之后
if __name__ == '__main__':参考资料:https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing
https://stackoverflow.com/questions/73594921
复制相似问题