내 웹 사이트 백엔드 시스템으로 'Flask'를 사용하지만 'Python'은 단일 스레드 언어이기 때문에 동시에 두 가지 작업을 수행 할 수 없습니다 (예 : 백그라운드에서 계산해야하는 페이지를보고 싶다면 결과를 생성하기 위해 웹 페이지가 멈추고 결과가 실행될 때까지 기다립니다.
그러나 웹 사이트의 생명선은 대기 시간이며, 페이지를 방문 할 때 대기 시간이 길수록 방문자를 잃을 가능성이 커지고 그 반대의 경우도 마찬가지입니다.
계산이 백그라운드에서 실행되고 우선적으로 프런트 엔드 페이지에 데이터를 반환하도록 이 프로세스를 최적화하는 방법은 무엇입니까? 물론 스레드 풀을 소개합니다.
# 스레드 풀 소개
여기서 'Python'의 'ThreadPoolExecutor'모듈을 사용하고 있습니다.
concurrent.futures에서 ThreadPoolExecutor 가져 오기
프롬프트 모듈이 없으면 프롬프트에 따라 'pip'를 사용하여 설치합니다.
# 스레드 풀 사용
스레드 풀을 사용하는 것은 매우 간단합니다, 당신은 다음 코드를 참조 할 수 있습니다, 첫 번째 줄은 스레드 풀이 가질 수있는 스레드 수를 설정하는 것입니다, 나는 여기에 30을 설정.
두 번째 줄은 실행하는 데 시간이 걸리는 함수가 스레드 풀의 스레드 중 하나를 사용하여 실행된다는 것입니다.
풀 = ThreadPoolExecutor(30)
pool.submit(함수 이름, 함수 매개 변수)