扭曲与队列的CPU绑定任务

时间:2012-07-08 17:26:46

标签: python queue twisted multiprocessing cpu-usage

我有一个HTTP服务器执行一些IO操作,然后做一些CPU绑定的东西(PIL),然后回复数据(兆字节左右)。

(a)我的第一个想法是这样的:服务器和IO的过程,基于Twisted,以及PIL的几个进程,带队列。

如果这种架构是合理的,那么可能有一个库就是这样的:Twisted的多进程队列。但是,我在Twisted中并没有真正的经验,对它的社区一无所知,所以我发现的唯一的事情就是ampoule,我找不到任何文档和描述,这些文件和说明都不能说明它是适合工作的工具。

(b)另一个想法是在几个线程中运行多个服务器,每个服务器上都有IO和CPU内容。这看起来很愚蠢,因为CPU的东西会阻塞,但也许我真的不理解它。

所以,问题:

  1. 这些架构中的任何一个都合理吗?
  2. 你将如何实现它(使用Twisted + ampoule或什么?)
  3. 对于(a),您如何从“worker”向服务器线程发送大量数据?或者我可以告诉工人直接以某种方式写入回复?
  4. 有多少“工人”是合理的?

1 个答案:

答案 0 :(得分:1)

  1. 是的,这些架构可能是合理的
  2. 我也可能使用安瓿,但我现在也不太了解它。 This link是我记得看到的最好的介绍。
  3. 因为听起来你的工作人员总是在同一台机器上,所以你应该可以使用共享内存。
  4. 这非常依赖于您可用的核心数量以及工作的密集程度(包括CPU时间和其他资源,如内存和磁盘)。可能很难给出任何答案,而不是“每个核心大约1-5个进程的基准测试,看看哪个最快”。