python 은 병발 방법 에 대한 상세 한 설명 을 어떻게 지원 합 니까?
커 널 스 레 드,Python 웹 프로그램 에 대한 요청 이 있 으 면 오래 걸 리 는 계산 작업(점용)입 니 다.이 프로그램 은 첫 번 째 요청 을 받 은 후에
다른 부탁 을 처리 할 수 있 을 까?웹 프로그램 이 요청 을 받 아들 이면 while True:
def handle_request(request):
while True:
pass
코드 에서 이해 하면 Python 은 하나의 실제 실행 스 레 드 만 있 고 코드 가while True
에 가면 유일한 cpu 핵심 을 차지 합 니 다.처리 할 기회 가 있 습 니 다.다른 미 션 이 요?
두 스 레 드 를 모두 while True 로 시작 하여 두 요청 을 모 의 할 수 있 는 지 관찰 합 니 다.
import time, threading
def f1(name):
while True:
print(name)
time.sleep(1)
threading.Thread(target=f1, args=('f1', )).start()
threading.Thread(target=f1, args=('f2', )).start()
출력 결과:f1
f2
f2f1
f2
f1
...
실제로 Django(Python Web 프레임 워 크)테스트 를 사용 합 니 다.요청 이 실행 되 더 라 도
while True
다른 요청 을 처리 할 수 있 습 니 다.왜 두 개
while True
가 모두 실 행 될 수 있 는 지 설명 하 자.아니면 GIL 이라는 자물쇠 로 첫 번 째
while True
의 스 레 드 가 이 자 물 쇠 를 가 져 와 야 실행 할 수 있 습 니 다.그리고 자 물 쇠 를 실행print(name)
한 다음 에 자 물 쇠 를 풀 었 습 니 다.그것 은 중단 되 었 고 이 어 두 번 째
while True
스 레 드 가 GIL 을 받 은 후에 실행 되 기 시 작 했 으 며 GIL 교 체 를 둘러싸 고 실행 되면 서 Python 의 다 중 스 레 드 가 실현 되 었 다.요약:
while True
CPU 자원 을 계속 가지 고 있 을 수 없습니다.이것 도 실행 하고 잠시 쉬 는 것 입 니 다.이것 은 다른 프로 세 스 에 기 회 를 주 었 습 니 다.이 안에 두 가지 관건 이 있 습 니 다.잠 금 해제 와 유사 한 프로 세 스 스케줄 링:
주동 적 으로 기다 리 는 전형 적 인 것 은 sleep 이다.주동 적 으로 자 물 쇠 를 포기 하고 일정한 시기 에 다시 실행 하 는 것 이다.
이상 의 분석 은 Python 이 병발 을 지원 하지만 다 중 핵 프로세서 의 장점 을 이용 할 수 없 기 때문에 대량의 계산 집약 형 응용
Python 을 사용 하기에 적합 하지 않 습 니 다.
python 이 병발 을 어떻게 지원 하 는 지 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 python 지원 병발 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.