我正在试图弄清楚如何制作一次可以接受多个客户端的服务器。在这样做时,我需要客户端能够同时从服务器发送和接收数据。
我是否必须制作线程服务器?并有一个监听数据的线程。
然后是另一个向客户发送信息的线程?
那么对于客户端,我是否需要使用线程来发送/获取信息?
答案 0 :(得分:3)
使用异步IO。 python有十几个异步IO套接字库。 Here是一个简短的基准。
我还测试了gevent
,eventlet
,asyncore
,twisted
,pyev
,pycurl
,tornado
。
除非你真的知道自己在做什么,否则不要在python中使用线程。 Python和线程不是真正的大朋友(除非版本< 3.2 in 3.2必须有新的gil)。
答案 1 :(得分:2)
在服务器端,您显然需要Socket Server。此服务器为每个传入的客户端连接创建一个新线程。
一旦建立连接,如果通信是同步的,则客户端和为通信实例化的线程如果必须并行执行其他业务而不是监听套接字,则需要额外的线程。如果您需要异步通信,那么Python提供了一个很好的Asynchronous Socket Handler。
答案 2 :(得分:1)
答案 3 :(得分:1)
您不需要客户端或服务器的线程;你可以选择()来复用单个线程中的所有I / O.