2010-02-08 64 views
3

我有一个需要执行的进程池。我想充分利用这台机器,这样所有的CPU都在执行进程。我不想过度订阅系统,所以我真正想要的是#execution_processes =#cpus在任何特定时刻。 我还需要存储每个完成的进程的stdout,stderr和返回码。 这怎么能在Python中实现?简单的例子,在Python中进程的排程安排?

编辑:'进程'我的意思是一个shell进程。

+0

“#execution_processes =#cpus”将不能充分利用您的系统。由于单个进程很少使用100%的资源,因此您应该删除对此问题的限制。 – 2010-02-08 09:47:32

+0

一般而言,您的声明是正确的,但在我的特殊情况下,每个进程的CPU利用率达到100%。 – 2010-02-08 11:31:56

+0

@zr:绝对100%,所有的时间?它不可能拥有一个永远不会发出单个系统请求并永不等待资源的进程,但会立即增加100%的CPU使用率。这听起来像只出现在作业问题中的那种人为约束。 – 2010-02-08 13:03:53

回答

2

如果你正在谈论自己,Python的实现过程:

multiprocessing模块使您能够生成多个流程的能力。特别是,它听起来像你想要创建multiprocessing.cpu_count个进程,可能在Pool

如果你在谈论要通过shell执行单独的程序:

subprocess模块将让你产卵通过其Popen类,它有参数stdinstdoutsterr接受过程类似文件的对象。可以用Popen.returncode来检查返回码。

+0

我指的是后者。 – 2010-02-08 07:50:10