0

我的问题类似于这里问的问题: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()
4

0 回答 0