[英]simultaneously sending/receiving info from a server, in python?
我试图弄清楚如何使一台服务器可以一次接受多个客户端。 这样做时,我需要客户端能够同时从服务器发送和接收数据。
我需要制作线程服务器吗? 并且有一个线程来监听数据。
然后是另一个向客户端发送信息的线程?
然后对于客户端,我是否需要使用线程来发送/获取信息?
使用异步IO。 有许多用于python的异步IO套接字库。 这是一个简短的基准。 我还测试了gevent
, eventlet
, asyncore
, twisted
, pyev
, pycurl
, tornado
。
除非您真的知道自己在做什么,否则不要在python中使用线程。 Python和线程并不是真正的大朋友(除非3.2中的<3.2版本必须有新的gil)。
在服务器端,您显然需要Socket Server 。 该服务器为每个传入的客户端连接创建一个新线程。
建立连接后,如果客户端和为通信实例化的线程都必须并行执行其他事务,而不是在同步通信时侦听套接字,则它们都需要一个额外的线程。 如果需要异步通信,那么Python提供了一个出色的Asynchronous Socket Handler 。
您不需要客户端或服务器的线程。 您可以改为select()在单个线程中多路复用所有I / O。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.