flyps 发表于 2021-3-27 01:18:05

为什么tkinter变量导致多进程报错??

运行多进程就报错,是tkinter变量导致的,请问要怎么修改,谢谢!!


import multiprocessing as mp
import tkinter as tk


class Test():
    def __init__(self):
      root = tk.Tk()
      frame = tk.Frame(root,height=400,width=400)
      frame.grid(row=0)
      self.v = tk.StringVar()
      entry = tk.Entry(frame, textvariable=self.v,width=3)
      entry.grid(row=0, column=0)
      entry.insert(0,10)
      theButton1 = tk.Button(frame,height=4,width=10,text='执行',command=self.doit)
      theButton1.grid(row=1,column=0)
      root.mainloop()   

    def job(self,q):
      res = 0
      for i in range(1000000):
            res += i + i**2 + i**3
      q.put(res) # queue

    def doit(self):
      #print(self.v.get())
      q = mp.Queue()
      p1 = mp.Process(target=self.job, args=(q,))
      p2 = mp.Process(target=self.job, args=(q,))
      p1.start()
      p2.start()
      p1.join()
      p2.join()
      res1 = q.get()
      res2 = q.get()
      print('multicore:',res1 + res2)
      
      
if __name__ == '__main__':
    go = Test()

逃兵 发表于 2021-3-27 01:18:06

import multiprocessing as mp
import tkinter as tk


class Test():
    def __init__(self):
      global v
      root = tk.Tk()
      frame = tk.Frame(root,height=400,width=400)
      frame.grid(row=0)
      v = tk.StringVar()
      entry = tk.Entry(frame, textvariable=v,width=3)
      entry.grid(row=0, column=0)
      entry.insert(0,10)
      theButton1 = tk.Button(frame,height=4,width=10,text='执行',command=self.doit)
      theButton1.grid(row=1,column=0)
      root.mainloop()
      


    def job(self,q):
      res = 0
      for i in range(1000000):
            res += i + i**2 + i**3
      q.put(res) # queue

    def doit(self):
      print(v.get())
      q = mp.Queue()
      p1 = mp.Process(target=self.job, args=(q,))
      p2 = mp.Process(target=self.job, args=(q,))
      p1.start()
      p2.start()
      p1.join()
      p2.join()
      res1 = q.get()
      res2 = q.get()
      print('multicore:',res1 + res2)
      
      
if __name__ == '__main__':
    go = Test()

flyps 发表于 2021-3-27 11:45:44

逃兵 发表于 2021-3-27 01:18


谢谢!!!!!

flyps 发表于 2021-3-31 10:21:35

逃兵 发表于 2021-3-27 01:18


你好,如果方便的话,帮我看一下另一个问题,谢谢
https://fishc.com.cn/thread-193347-1-1.html
页: [1]
查看完整版本: 为什么tkinter变量导致多进程报错??