我有一个启动工作进程的python(2.6.5 64位,Windows 2008 Server R2)应用程序。父进程将作业放入作业队列中,工作人员从中获取作业。同样,它有一个结果队列。每个工作人员通过查询服务器来执行其工作。工人的CPU使用率很低。
当工作人员数量增加时,服务器上的CPU使用率实际上会缩小。服务器本身不是瓶颈,因为我可以从其他应用程序中进一步加载它们。
其他人看到过类似行为吗?当大量进程正在读取或写入相同队列时,python多处理队列是否存在问题?
答案 0 :(得分:1)
性能约束的两个不同想法:
收集更多信息:
可能的改进:
答案 1 :(得分:0)
除非您提供所有详细信息,否则不确定发生了什么。
但是,请记住,真正的并发性受实际硬件线程数量的限制。如果启动的进程数远远大于实际的硬件线程数,那么在某些时候,上下文切换开销将超过拥有更多并发进程的好处。
答案 2 :(得分:0)
创建新的thead是非常昂贵的操作。
控制大量并行网络连接的最简单方法之一是使用支持异步套接字的无堆栈线程。 Python有很大的支持和一堆库。
我最喜欢的是gevent,它有一个很棒且完全透明的猴子修补工具。