파이썬 멀티 스레딩 (A) : GIL

파이썬 멀티 스레딩 (A) : GIL

지금 시점에 대한 지식을 통합하는 파이썬, 멀티 스레드 프로그래밍을 학습

  • GIL 즉 전체 이름이 CPU의 바이트 코드에 그 하나의 스레드 실행을 보장하기 위해 글로벌 인터프리터 잠금의 약자입니다, 글로벌 통역 잠금, 여러 CPU에 여러 스레드에 매핑 할 수 없습니다.이 **의 CPython 인터프리터입니다 CPython과 대부분의 환경 실행 환경에서 기본이며, 많은 고통이 CPython을 기반으로 작성된 인해 결함이 **, 그래서 많은 사람들이 GIL 파이썬 문제에 기인한다
  • GIL은 설계 보안 스레드를 보호 아니라 스레드에 동기화되지 않은 경우, 스레드의 수는 글로벌 리소스를 공유, 멀티 스레드 때문에 GIL도 완전히 문제를 해결할 수없는 경우에도 함께, 사실, 데이터 리소스의 오류를 만들기 위해 매우 쉽습니다 GIL 또한 조건, 다음 스레드가 아직 완료되지 않습니다에 따라 잠금을 해제합니다, 다른 스레드가 이미 시작, 그것은 데이터 리소스 오류로 매우 쉽게 여전히
  • 프로그램은 프로세스를 생성, 실행을 시작하면, GIL은 글로벌 통역 잠금하는 과정에, 여러 스레드가 동시에 잡고 잠금, 경쟁을 수행하기 위해 올 수 기다릴 필요가 잡아하지 않았다. 특정 조건에서 프로세스 스레드 실행이 충족 될 때 ( 예를 들어, 다음 I O, 시간이 많이 걸리는 작업, 또는 바이트 코드 칩 시간 **)이 날치기를 계속하는 ** 시간은 GIL을 발표 할 예정 잠금은 다른 스레드가 기다리고 있습니다 스레드가 데이터 조작 가능성이있는 데이터를 파괴하기 때문에 공유 전역 변수이기 때문에, 로크는, 상기 데이터 에러는 데이터의 정확성을 보장하기 위하여 뮤텍스와 같이, 용액이 사용 스레드 동기화이고 이때 발생한
  • 뮤텍스 : 사용 뮤텍스 목적에 특정 키 코드의 구현 만이 스레드 완료하기 위해 처음부터 끝까지 실행할 수 있지만, 단점은 영향을 하나의 멀티 태스킹으로, 코드의 효율성을 작업.
发布了11 篇原创文章 · 获赞 9 · 访问量 229

추천

출처blog.csdn.net/lzn1210899799/article/details/103622870