使用flask,如果需要开启多线程,就要使用threaded这个参数。
并且,flask的多线程是针对路由而言,对于普通的函数或代码,没有多线程的效果。
下面一起看看吧。
一、示例代码
其它代码已省略,只提供关键代码…
def t1():
print('t1收到请求',time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())), flush=True)
time.sleep(8)
print('t1返回请求',time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())), flush=True)
return 'Hello World t1'+time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
def t2():
print('t2收到请求',time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())), flush=True)
time.sleep(8)
print('t2返回请求',time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())), flush=True)
return 'Hello World t2'+time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
if __name__ == '__main__':
server.run(debug=False,threaded=True,processes=False)
#threaded多线程,processes多进程,两种只能开一个,threaded为False,processes的值当设置为一个整数。使用了前者,processes最好不填都可以,免得麻烦。
二、观察多线程与单线程的区别
①单线程
单线程的参数:threaded=False 观察上图即明白。同一时间收到多任务,单线程就得排队。
②多线程
多线程的参数是:threaded=True 观察上图即明白。同一时间收到多任务,多线程不用排队。
三、总结
经过测试,flask如果不使用或不填threaded参数,默认其实就是单线程的。只有threaded=True或processes=50这种情况才是多线程的。