2015-11-08 70 views
1

我想使用多处理同时运行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() 

回答

6

您正在调用函数并等待它们完成,以便将它们的结果作为进程目标传递。传函数本身代替 - 那就是,改变这种:

t1 = Process(target = app.myGUI.mainloop()) 
t2 = Process(target = counting()) 

这样:

t1 = Process(target=app.myGUI.mainloop) 
t2 = Process(target=counting) 

因此该方法可以调用(在子进程)的功能。

+0

我试着改变上面的代码,并导致一个很大的错误。将t1.start()更改为t1.run()工作,但它仍然按顺序运行。 –

+0

运行时错误:尝试在当前进程完成引导阶段之前启动新进程。 –