2

在 Python 中,如果我希望我的服务器在 CPU 方面能够很好地扩展,我显然需要生成多个进程。我想知道哪个更好(使用 Twisted):

A)管理进程(持有实际套接字连接的那个)将接收到的数据包放入一个共享队列(来自多处理模块的那个),工作进程将数据包拉出队列,处理它们并将结果发送回客户端。

B) 管理器进程(持有实际套接字连接的那个)启动一个延迟线程,然后调用进程池上的 apply() 函数。一旦结果从工作进程返回,管理器将结果发送回客户端。

在这两种实现中,工作进程都使用线程池,因此它们可以同时处理多个数据包(因为会有很多数据库查询)。

4

2 回答 2

2

我认为B是有问题的。该线程只能在一个 CPU 上运行,即使它运行一个进程,该线程仍在运行。A可能会更好。

最好在时间方面尝试和测量两者,看看哪个更快,哪个扩展性好。但是,我要重申,我非常怀疑 B 能否很好地扩展。

于 2009-01-23T20:17:42.060 回答
1

我认为“A”是你想要的答案,但你不必自己做。

你考虑过安瓿吗?

于 2009-02-01T11:20:45.683 回答