猿问

Python线程,Event和Queue如何协同工作?

在看了比斯利书中的例子后,我正在和我的朋友交谈


class ActorExit(Exception):

    pass


class Actor:

    def __init__(self):

        self._mailbox = Queue()


    def send(self, msg):

        self._mailbox.put(msg)


    def recv(self):

        msg = self._mailbox.get()

        if msg is ActorExit:

            raise ActorExit()

        return msg


    def close(self):

        self.send(ActorExit)


    def start(self):

        self._terminated = Event()

        t = Thread(target=self._bootstrap)

        t.daemon = True

        t.start()


    def _bootstrap(self):

        try:

            self.run()

        except ActorExit:

            pass

        finally:

            self._terminated.set()


    def join(self):

        self._terminated.wait()


    def run(self):

        while True:

            msg = self.recv()


class PrintActor(Actor):

    def run(self):

        while True:

            msg = self.recv()

            print('Got:', msg)

我的朋友认为 Event 的唯一目的是阻塞主线程,直到另一个线程执行设置操作。真的吗?我们如何观察线程执行?


富国沪深
浏览 133回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答