Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python2.x中一次连接并处理多个原始套接字_Python_Multithreading_Sockets_Multiprocessing_Raw Sockets - Fatal编程技术网

在Python2.x中一次连接并处理多个原始套接字

在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(

我是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((HOST3, PORT1))

这也是以后需要并行化的
s.sendall()
&
s.recv()

如果只有一个侦听线程,则可以使用select等待多个套接字,并在其中任何一个返回数据时被唤醒:


如果不了解更多关于服务器协议的信息、您正在收听的内容以及打算使用它做什么,很难掌握大量的知识,et-c,但是我可以想象,在没有其他附加信息的情况下,通信是由多处理池处理的。池(3)池中的每个成员都映射到一个IP地址,所有三个成员都将数据发送到同一个multiprocessing.Queue()中,该队列由循环线程计算

还有其他细节吗

祝你工作顺利

看看这个模块


它需要Python3,但允许编写具有多个执行上下文的单线程应用程序,这是一种协作多线程处理,只有当用户这样说时才切换上下文。您可以充分利用基于线程和事件的并发性。

使用线程和事件的并发性对我来说非常有效

非常确定这里不需要多个进程。一个进程比一个线程更重,所以在其他条件相同的情况下,线程更可取。我添加它是因为这个问题被标记为多进程,并且没有人提出过这样的解决方案。也就是说,kfx完全正确地描述了进程生成所产生的开销