如何在Python中使用tkinter按钮终止两个进程
我想用python脚本创建两个进程。需要通过tkinter按钮启动和停止这些过程。进程可以正确启动,但不能终止。使用tkinter按钮正确终止进程的最简单方法是什么? 哪种最佳实践方式如何在Python中使用tkinter按钮终止两个进程,python,python-3.x,tkinter,multiprocessing,Python,Python 3.x,Tkinter,Multiprocessing,我想用python脚本创建两个进程。需要通过tkinter按钮启动和停止这些过程。进程可以正确启动,但不能终止。使用tkinter按钮正确终止进程的最简单方法是什么? 哪种最佳实践方式 从tkinter导入* 导入多处理 def print1(): 全球a 当a==True时: 打印('im进程1') def print2(): 全球a 当a==True时: 打印('im进程2') def start(): process1.start() process2.start() def stop()
从tkinter导入*
导入多处理
def print1():
全球a
当a==True时:
打印('im进程1')
def print2():
全球a
当a==True时:
打印('im进程2')
def start():
process1.start()
process2.start()
def stop():
全球a
a=错误
a=正确
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
process1=多处理。进程(目标=打印1)
process2=多处理。进程(目标=打印2)
root=Tk()
根标题(“标题”)
根几何(“200x200”)
app=帧(根)
app.grid()
开始=按钮(应用程序,text=“开始”,命令=开始)
停止=按钮(应用程序,text=“停止”,命令=停止)
start.grid()
stop.grid()
root.mainloop()
process1.join()
process2.join()
问题似乎出在停止方法中
我想我可能知道问题是什么,但我不是100%确定。python文档中似乎给出了原因的答案。这里的代码运行良好(我编辑了语法,并对按钮使用了tkk
,看起来更好):
希望这有帮助 普通变量不在多处理.Process的实例之间共享
这意味着您的:
global a
是每个进程中的一个不同的全局变量,与主Python程序中的第三个global a
分开。因此,当您使用tk按钮将最后一个a
设置为False
时,通过process1
记住的过程中的a
仍然是True
,通过process2
记住的过程中的a
您可以跨流程共享变量。有两种方法可以做到这一点:通过,或通过共享内存。共享内存更高效,但更难以使用,有时也有OS依赖性,因此如果不需要特别高性能,请考虑使用Manager。
global a