Python 在flask web app中使用线程
我正在开发一个web应用程序,它有一个可能需要很长时间才能完成的服务/任务。我是python新手,了解到python有GIL,这意味着无论内核数量多少,一次只能运行一个线程 我的伪代码是这样的Python 在flask web app中使用线程,python,multithreading,flask,thread-safety,Python,Multithreading,Flask,Thread Safety,我正在开发一个web应用程序,它有一个可能需要很长时间才能完成的服务/任务。我是python新手,了解到python有GIL,这意味着无论内核数量多少,一次只能运行一个线程 我的伪代码是这样的 def service_xxx(self, data): thread = ThreadXXX(data) thread.start() self.threads[data.id] = thread 我的问题是当100个请求到来时会发生什么?flask框架将使用所有内核并发运行1
def service_xxx(self, data):
thread = ThreadXXX(data)
thread.start()
self.threads[data.id] = thread
我的问题是当100个请求到来时会发生什么?flask框架将使用所有内核并发运行100个用户线程,还是将在单个内核上运行100个线程 Python(CPython)没有针对线程框架进行优化。您可以继续分配更多资源,它将尝试生成/排队新线程并重载核心。您需要在此处进行设计更改:
基于过程的设计:
你没有100个核,是吗?现在说真的。GIL是我个人在需要并发时不依赖线程的原因。我更喜欢多重处理。有关更多信息,请参阅。您可以与FlaskI集成,我正在尝试了解FlaskI是如何处理这些线程的,以及每个线程中的请求是如何处理的?