同时运行多个循环

Nin*_*ies 1 python multiprocessing

我试图使用多处理同时运行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()
Run Code Online (Sandbox Code Playgroud)

lvc*_*lvc 6

您正在调用函数并等待它们完成,以便将其结果作为Process目标传递.相反,传递函数 - 也就是说,改变这个:

t1 = Process(target = app.myGUI.mainloop())
t2 = Process(target = counting())
Run Code Online (Sandbox Code Playgroud)

对此:

t1 = Process(target=app.myGUI.mainloop)
t2 = Process(target=counting)
Run Code Online (Sandbox Code Playgroud)

这样Process就可以调用这些函数(在子进程中).