据我所知,在Python中,如果你在多核环境中使用普通的线程,GIL通常会以负面的方式影响性能(因为线程会不断地获取和释放GIL,并在线程/处理器之间进行大量的上下文切换)。
这就是为什么很多人开始使用绿色线程,例如eventlet。eventlet库允许多个绿色线程协同工作,并在单个处理器中完美地工作(较少的同步问题,快速繁殖/效率等)。
我的问题是,如果我有一个多核操作系统,并且要设计我的python应用程序,我应该遵循什么最佳实践或设计模式来利用协作线程(绿色线程)和多核处理器的优势。
发布于 2013-06-09 20:37:27
我第一次在Youtube growth 1的技术演讲中看到的非常普遍的方法是:识别并解决你的瓶颈,饮酒,睡眠等,继续处理瓶颈。
所以,当你有太多的工作和内核闲置的时候,好吧,运行更多的进程。使用相同的方法,您将知道何时停止甚至缩小进程池。
https://stackoverflow.com/questions/17002047
复制相似问题