我的程序是ICAPServer(类似于httpserver),它的主要工作是从客户端接收数据并将数据保存到数据库。
有两个主要步骤和两个主题:
想知道是否有人有任何建议......
答案 0 :(得分:2)
很难肯定地说,但是在这种情况下,使用两个进程而不是线程可能会有所帮助。由于Python具有全局解释器锁(GIL),因此它的作用是只允许任何一个线程随时执行Python指令。
围绕流程设计系统可能具有以下优势:
答案 1 :(得分:0)
对队列中的数据量设置上限?
答案 2 :(得分:0)
一个注意事项:在进行优化之前,获得一些好的测量和分析非常重要。
那就是说,我敢打赌,第二步的缓慢部分是数据库通信;您可以尝试分析SQL语句及其执行计划。然后优化它(它是SQLAlchemy的features之一);如果它仍然太慢,请检查数据库优化。
当然,瓶颈可能处于一个完全不同的地方;在这种情况下,您仍然有机会使用C代码,专用网络或更多线程进行优化 - 只是为了给出完全不同类型的优化的三个可能示例。
另一点:由于I / O操作通常会释放GIL,您还可以通过添加另一个读取器线程来尝试提高性能 - 我认为这可能是一个更便宜的解决方案。