2017-03-21 6 views
0

완료하는 데 시간이 오래 걸리는 서비스/작업이있는 웹 앱을 개발 중입니다. 나는 파이썬에 익숙하지 않으며 파이썬은 길 (GIL)을 가지고있다. 이는 한 번에 하나의 스레드 만 코어의 수와 관계없이 실행할 수 있다는 것을 의미한다.플라스크 웹 앱의 스레드 사용

내 의사 코드는 내 질문에 100 개 개의 요청이 올 때 일어나는 것이다이

def service_xxx(self, data): 
    thread = ThreadXXX(data) 
    thread.start() 
    self.threads[data.id] = thread 

처럼? 플라스크 프레임 워크는 모든 코어를 사용하여 100 개의 사용자 스레드를 동시에 실행하거나 단일 코어에서 100 개의 스레드를 실행합니까?

+0

당신은 100 개 코어가없는 (완전히 GIL 페지), 당신은 무엇입니까? –

+0

이제 심각합니다. GIL은 동시성이 필요할 때 개인적으로 스레드에 의존하지 않는 이유입니다. 나는 멀티 프로세싱을 선호한다. 자세한 내용은 http://stackoverflow.com/q/35616639/7699691을 참조하십시오. –

+0

[Celery] (http://www.celeryproject.org/)와 Flask – stamaimer

답변

0

파이썬 (CPython)은 스레드 프레임 워크 용으로 최적화되어 있지 않습니다. 더 많은 리소스를 계속 할당 할 수 있으며 새 스레드를 생성하거나 대기열에 넣고 코어에 과부하를 시도합니다. 기반 설계

프로세스 :

  1. 중 하나가 multiprocessing 모듈 rabbitmq
  2. 만들기 사용을 사용하고 별도로
  3. 스폰 subprocess
이 작업을 실행할 수 있도록 현재 설계 변경을해야

또는 여전히 스레드를 고집하고 싶다면

  1. 스위치 PyPy
  2. 스위치 PyPy-STM에 (빠른 CPython과 비교)