如何在Python中的并行进程中运行2个while循环

时间:2019-04-28 11:29:43

标签: python multithreading parallel-processing

我正在尝试在python中进行简单的聊天,我需要并行运行2个while循环。其中之一是每1秒从内存存储区读取一次消息。第二个方法是等待带有input()的来自用户的新消息,将其存储在blob中,然后等待下一个输入。

我尝试使用异步,线程,多处理,但是我还没有解决问题。无论循环何时运行,它似乎总是卡在其中,并且永远不会到达第二个线程/进程/函数。我在这里或网上找不到的示例都没有帮助。

class MainChat():
    def listen_for_messages(self):
        while True:
            print("listener")
            # reading from db and detecting if any new messages have been sent to user
            #if new message is detected, print it out

    def message_writer(self):
        while True:
            print("writer")
            msg = input()
            # parse and send message to db

if __name__ == '__main__':
    chat = MainChat()
    Process(target=chat.listen_for_messages()).start()
    Process(target=chat.message_writer()).start()

最终结果将是运行2个并行进程,以检测其他人是否向我发送了消息以及我是否向他们发送了消息。

1 个答案:

答案 0 :(得分:1)

您不小心运行了函数,而没有将其作为参数传递:

Process(target=chat.listen_for_messages()).start()
Process(target=chat.message_writer()).start()

应该是

Process(target=chat.listen_for_messages).start()
Process(target=chat.message_writer).start()

请注意,()在第二行中已删除。