Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在mProfile结果中,select.epoll会占用一半的系统时间,这正常吗?_Python - Fatal编程技术网

Python 在mProfile结果中,select.epoll会占用一半的系统时间,这正常吗?

Python 在mProfile结果中,select.epoll会占用一半的系统时间,这正常吗?,python,Python,我正在尝试优化python后端服务器。下面一个简单的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,

我正在尝试优化python后端服务器。下面一个简单的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()


我严重怀疑我的代码由于糟糕的体系结构而存在性能问题(运行时很慢),但我不知道问题出在哪里

这并不奇怪。如果应用程序是事件驱动的,它将花费大部分时间等待事件发生。它只是坐在
select.poll()
中,在一些数据到达某个文件描述符之前什么也不做。当有东西到达时,它会处理它,然后返回到调用
select.poll()

的主循环,在一个占用太多CPU周期的循环中调用select.poll()也是如此?我知道如果我在浏览器控制台中尝试(true){},它将使我的浏览器崩溃。否
select.poll()
是OS
epoll()
系统调用的一个接口,它将进程置于睡眠状态,直到发生某些事情。正如我所说,进程什么都不做,没有循环。我更新了我的问题,以响应您的“OS epoll()系统调用,它将进程置于睡眠状态,直到发生某些事情”。为什么默认Flask web服务器不使用select.poll()?Flask更好吗?您应该看看Flask的源代码,看看它是如何工作的。在等待某些事情发生时,还有其他方法可以阻止进程。