鱼C论坛

 找回密码
 立即注册
查看: 3251|回复: 4

[已解决]为什么tkinter下运行多进程就会弹出多个窗口?

[复制链接]
发表于 2021-3-26 10:15:46 | 显示全部楼层 |阅读模式
20鱼币
为什么tkinter下运行多进程就会弹出多个窗口?

谢谢!!
import multiprocessing as mp
import tkinter as tk


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

def doit():
    q = mp.Queue()
    p1 = mp.Process(target=job, args=(q,))
    p2 = mp.Process(target=job, args=(q,))
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    res1 = q.get()
    res2 = q.get()
    print('multicore:',res1 + res2)

root = tk.Tk()
frame = tk.Frame(root,height=400,width=400)
frame.grid(row=0)
theButton = tk.Button(frame,height=4,width=10,text='执行',command=doit)
theButton.grid(row=1,column=0)
root.mainloop()
最佳答案
2021-3-26 10:15:47
import multiprocessing as mp
import tkinter as tk


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

def doit():
    q1 = mp.Queue()
    q2 = mp.Queue()
    p1 = mp.Process(target=job, args=(q1,))
    p2 = mp.Process(target=job, args=(q2,))
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    res1 = q1.get()
    res2 = q2.get()
    print('multicore:',res1 + res2)

if __name__ == '__main__':
    root = tk.Tk()
    frame = tk.Frame(root,height=400,width=400)
    frame.grid(row=0)
    theButton = tk.Button(frame,height=4,width=10,text='执行',command=doit)
    theButton.grid(row=1,column=0)
    root.mainloop()

最佳答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-26 10:15:47 | 显示全部楼层    本楼为最佳答案   
import multiprocessing as mp
import tkinter as tk


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

def doit():
    q1 = mp.Queue()
    q2 = mp.Queue()
    p1 = mp.Process(target=job, args=(q1,))
    p2 = mp.Process(target=job, args=(q2,))
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    res1 = q1.get()
    res2 = q2.get()
    print('multicore:',res1 + res2)

if __name__ == '__main__':
    root = tk.Tk()
    frame = tk.Frame(root,height=400,width=400)
    frame.grid(row=0)
    theButton = tk.Button(frame,height=4,width=10,text='执行',command=doit)
    theButton.grid(row=1,column=0)
    root.mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-3-26 11:04:16 | 显示全部楼层

谢谢,请问为什么加上if__name__就可以了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-26 11:38:39 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-3-26 11:48:15 | 显示全部楼层
逃兵 发表于 2021-3-26 11:38
https://docs.python.org/zh-tw/3.6/library/multiprocessing.html#multiprocessing-programming

谢谢,如果可以话,帮我看一下另一个帖子的问题,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 07:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表