【发布时间】:2017-11-05 20:16:14
【问题描述】:
我正在用 Python 构建一个套接字服务器。
这台服务器
- 从客户端接收数据
- 在这里做一些事情(大约需要大约 10 秒,具体取决于输入数据)
- 在完成上述一些工作后发回数据
除非客户端不连续同时发送数据,否则此系统工作正常。例如,假设服务器需要 5 秒来处理数据,而客户端每 10 秒发送一次数据。然而,问题是客户端一次发送多个请求,从而导致延迟。目前,除非服务器准备好接收数据,否则客户端无法向服务器发送数据,这意味着服务器没有做任何工作。以下是我想要构建的。
- a) 在套接字服务器上建立一个队列,其主要任务是创建一个输入数据队列,以便客户端即使在服务器繁忙时也可以向服务器发送数据
- b) 在套接字服务器上创建一个线程(在这里,我对并发性和并行性有点困惑。在套接字中工作专注于计算而不是系统调用),以便服务器可以“同时”工作。
- c) 将数据发送回客户端套接字
我的问题如下。
- 我需要使用队列来实现 a) 吗?
- 我需要使用线程还是其他东西来实现 b)?
提前致谢
最好的
哎呀
【问题讨论】:
-
您可能会发现使用许多现有的 python 服务器框架之一更容易。
-
thx @pvg 我去看看。
-
我刚刚看到你的其他评论,这是关于一个 single 客户端的,这进一步简化了这一点。如果您受计算限制并且正在寻找实际的并行性,那么您很可能会想要多处理之类的东西。到目前为止,您所写的内容尚不完全清楚您要完成什么,但几乎可以肯定您不需要从头开始重新发明它。
-
@pvg 我已经构建了多线程套接字服务器,并成功地降低了总计算速度。下一步将是应用多处理以进一步减少计算过程中花费的时间。感谢您的反馈!
标签: python multithreading sockets concurrency queue