我的问题类似于这里问的问题:Cannot 'pickle' a Tkinter object in a multiprocessing environment in Windows
不幸的是,我不太明白如何将目标函数传递给创建的子进程类。如果可能的话,我想传递参数并获得该函数的返回(可选)。我基本上只是从上面的问题中复制了代码。仅供参考,这是代码:(根本不是我的代码)
import multiprocessing
from tkinter import *
from queue import Empty
class Subprocess(multiprocessing.Process):
def __init__(self):
multiprocessing.Process.__init__(self)
self.queue = multiprocessing.Queue()
def run(self):
self.root = Tk()
self.root.after(100, self._check_queue) # Check the queue every 100ms
self.root.mainloop()
def _check_queue(self):
try:
out = self.queue.get_nowait()
if out == 'stop':
self.do_stop()
return
except Empty:
pass
self.root.after(100, self._check_queue)
def stop(self):
self.queue.put('stop')
def do_stop(self):
self.root.destroy()