在Python2.x中一次连接并处理多个原始套接字
我是Python新手,正在努力“在工作中”学习Python。我必须这样做 我需要通过原始套接字连接与3台服务器通信。我可以很容易地按顺序完成。但我想知道是否有一种方法可以同时与这3台服务器通信?所有3台服务器都有不同的IP地址 基本上,尝试执行以下操作,但只需一步:在Python2.x中一次连接并处理多个原始套接字,python,multithreading,sockets,multiprocessing,raw-sockets,Python,Multithreading,Sockets,Multiprocessing,Raw Sockets,我是Python新手,正在努力“在工作中”学习Python。我必须这样做 我需要通过原始套接字连接与3台服务器通信。我可以很容易地按顺序完成。但我想知道是否有一种方法可以同时与这3台服务器通信?所有3台服务器都有不同的IP地址 基本上,尝试执行以下操作,但只需一步: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((HOST1, PORT1)) s.connect((HOST2, PORT1)) s.connect(
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST1, PORT1))
s.connect((HOST2, PORT1))
s.connect((HOST3, PORT1))
这也是以后需要并行化的
s.sendall()
&s.recv()
如果只有一个侦听线程,则可以使用select等待多个套接字,并在其中任何一个返回数据时被唤醒:
如果不了解更多关于服务器协议的信息、您正在收听的内容以及打算使用它做什么,很难掌握大量的知识,et-c,但是我可以想象,在没有其他附加信息的情况下,通信是由多处理池处理的。池(3)池中的每个成员都映射到一个IP地址,所有三个成员都将数据发送到同一个multiprocessing.Queue()中,该队列由循环线程计算 还有其他细节吗 祝你工作顺利 看看这个模块
它需要Python3,但允许编写具有多个执行上下文的单线程应用程序,这是一种协作多线程处理,只有当用户这样说时才切换上下文。您可以充分利用基于线程和事件的并发性。使用线程和事件的并发性对我来说非常有效 非常确定这里不需要多个进程。一个进程比一个线程更重,所以在其他条件相同的情况下,线程更可取。我添加它是因为这个问题被标记为多进程,并且没有人提出过这样的解决方案。也就是说,kfx完全正确地描述了进程生成所产生的开销