如何在没有多线程的情况下在python中运行多个进程?例如,考虑以下问题: -
我们必须制作一个Gui,它有一个启动按钮,可以启动一个函数(比如打印所有整数),并且有一个停止按钮,这样点击它就会停止该功能。
如何在Tkinter中执行此操作?
答案 0 :(得分:5)
然后,您需要将Button
小部件与启动工作线程的函数绑定。例如:
import time
import threading
import Tkinter as tk
class App():
def __init__(self, root):
self.button = tk.Button(root)
self.button.pack()
self._resetbutton()
def _resetbutton(self):
self.running = False
self.button.config(text="Start", command=self.startthread)
def startthread(self):
self.running = True
newthread = threading.Thread(target=self.printints)
newthread.start()
self.button.config(text="Stop", command=self._resetbutton)
def printints(self):
x = 0
while self.running:
print(x)
x += 1
time.sleep(1) # Simulate harder task
使用self.running
方法,您只能通过更改其值来优雅地结束线程。请注意,使用多个线程可以避免在执行printints
时阻止GUI。
我已阅读this previous question,我想你为什么在这里明确要求没有多线程的解决方案。在Tkinter中,此解决方案可用于其他线程必须与GUI部分通信的场景中。例如:在渲染某些图像时填充进度条。
然而,正如评论中指出的那样,这种方法太复杂,不能只打印数字。
Here你可以找到很多关于Tkinter的信息和更多例子。
修改强>
由于您的新问题已经结束,我将在此处更改代码以澄清最后一点。
答案 1 :(得分:0)
您是否尝试使用多处理模块?似乎是你正在寻找的那个。