我正在尝试优化python后端服务器。 this example之后的简单cProfile显示了系统时间的一半花费在select.poll上。
这是空的烧瓶Web服务器的另一个概要文件结果。 这是服务器代码:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello world'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
问题:
1)为什么我的代码使用大量的select.poll()而默认的Flask Web服务器不使用select.poll()?
我严重怀疑我的代码由于体系结构不良而存在性能问题(运行时速度很慢),但是我不知道问题出在哪里。
答案 0 :(得分:1)
这并不奇怪。如果应用程序是事件驱动的,它将花费大部分时间等待事件发生。它只是坐在select.poll()
中,直到某些数据到达文件描述符之一之前,它什么也不做。当有东西到达时,它会对其进行处理,然后返回到调用select.poll()
的主循环。