同时打印到控制台和 raw_input

Printing to console and raw_input at the same time

我有一个 client.py 和一个 server.py。客户端偶尔会收到来自服务器的消息。客户端也可以向服务器发送消息。

因为raw_input出现阻塞主线程,客户端收到服务器消息时,无法打印到控制台,需要raw_input先完成

我尝试使用多线程来解决这个问题,但在下面的代码中,甚至没有调用 raw_input。以下为client.py

import socket
import sys
import threading

BUFFER_SIZE = 1024

def listen_for_server_response(s):
    while 1:
        data = s.recv(BUFFER_SIZE)
        print(data)

def main():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((sys.argv[1], int(sys.argv[2])))
    thread = threading.Thread(target = listen_for_server_response(s))
    thread.start()
    while 1:
        command = raw_input("Command: ")
        s.send(command)

if __name__ == "__main__":
    main()

非常感谢任何帮助!

这似乎是个糟糕的设计,但您需要使用可调用函数来调用线程

thread = threading.Thread(target = listen_for_server_response,args=(s,))
thread.start()

通过像示例中那样调用它,您将在线程启动之前调用它并永远循环...您甚至无法到达 thread.start