我是Python的新手,并试图在工作中学习它#34;我需要这样做。
我需要使用原始套接字连接与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()
要并行化。
答案 0 :(得分:1)
如果你只有一个监听线程,你可以使用select来等待多个套接字,并在任何一个套接字返回数据时被唤醒:
答案 1 :(得分:0)
如果不了解有关您的服务器协议的更多信息,您正在倾听的内容以及您打算如何处理它等等,很难开出丰富的知识,但我可以想象,没有其他额外信息,通过multiprocessing.Pool(3)处理通信的场景,其中池的每个成员都映射到一个IP地址,并且所有三个成员都将数据发送到由循环线程评估的同一个multiprocessing.Queue()中。 / p>
还有其他细节吗?
祝你工作顺利!
答案 2 :(得分:0)
查看asyncio模块。
它需要Python 3,但允许编写具有多个执行上下文的单线程应用程序 - 一种协作式多线程,其中仅在用户这样说时才切换上下文。你真的得到了最好的线程和基于事件的并发。
答案 3 :(得分:0)
threading实际上为我效劳了。