在flask web app中使用线程

时间:2017-03-21 23:11:28

标签: python multithreading flask thread-safety

我正在开发一个Web应用程序,其服务/任务可能需要很长时间才能完成。我是python的新手并且读到python有GIL,这意味着一次只有一个线程可以运行而不管内核的数量。

我的伪代码就像这样

torch.legacy.nn

我的问题是当100个请求到来时会发生什么? flask flask框架将使用所有内核同时运行100个用户线程,还是在单个内核上运行100个线程?

1 个答案:

答案 0 :(得分:0)

Python(CPython)没有针对线程框架进行优化。您可以继续分配更多资源,并尝试生成/排队新线程并重载内核。您需要在此处进行设计更改:

基于流程的设计:

  1. 使用multiprocessing模块
  2. 使用rabbitmq并使此任务单独运行
  3. 产生subprocess
  4. 或者如果您仍想坚持使用线程:

    1. 切换到PyPy(与CPython相比更快)
    2. 切换到PyPy-STM(完全取消GIL)