我试图使用多处理同时运行2个循环,但它们似乎只是按顺序运行。 当第一个循环启动tkinter的mainloop()过程时,另一个循环不会启动,直到GUI窗口关闭,然后计数循环开始。 我尝试过多线程和多处理,结果相同。我需要它们同时运行。下面是一个演示该问题的简单示例。我使用的是python 2.7.10。
from multiprocessing import Process
from Tkinter import *
import time
count = 0
def counting():
while True:
global count
count = count + 1
print count
time.sleep(1)
class App():
def __init__(self):
self.myGUI = Tk()
self.myGUI.geometry('800x600')
self.labelVar = StringVar()
self.labelVar.set("test")
self.label1 = Label(self.myGUI, textvariable=self.labelVar)
self.label1.grid(row=0, column=0)
app = App()
t1 = Process(target = app.myGUI.mainloop())
t2 = Process(target = counting())
t1.start()
t2.start()
答案 0 :(得分:6)
您正在调用函数并等待它们完成,以便将其结果作为Process目标传递。相反,传递函数 - 也就是说,改变它:
IN clause
到此:
t1 = Process(target = app.myGUI.mainloop())
t2 = Process(target = counting())
这样Process就可以调用这些函数(在子进程中)。