1

我正在使用 Django ORM 在 ipython shell 中修改一些大数据查询。这是在 OS X 上的 VMware Fusion 中的 Debian 6 VM 上,允许 VM 访问主机上 4 核 HT i7 的 4 或 8 个内核(我已经玩过这些设置)。

当我在顶部查看进度时,例如在 python shell 中执行“for result in results:do_query()”时,python 和其中一个 postgres 进程似乎总是位于同一个物理 CPU 内核上 -它们的总 CPU 使用率加起来永远不会超过 100%,python 通常是 65% 到 postgres 的 25% 左右。VM 上的 iowait 并不过分高。

我不肯定他们总是在同一个核心上,但看起来确实如此。考虑到我最终计划如何扩展它,我希望更优化地安排 python 进程和 postgress 工作人员。有什么见解吗?

4

1 回答 1

4

现在,如果你的代码按照我认为的方式运行,那么 Postgres 总是在等待 Python 向它发送查询,或者 Python 正在等待 Postgres 返回响应。不会出现他们俩同时工作的情况,因此一次只能运行一个。

要开始更多地使用您的机器,您需要在 Python 端实现某种多线程。由于您没有详细说明您的查询是什么,因此很难说它可能是什么样子。

于 2012-11-30T02:08:07.247 回答