이 예제에서는 한 번에 여러 프로세스를 생성하는 방법을 보여 드리며 각 프로세스는 임의 모듈을 사용하여 계산할 난수를 출력합니다. 그러나 CPU 바인딩된 문제에 대해서는 대기할 수 없습니다. CPU는 문제를 완료 할 수있는 한 빨리 멀리 크랭크입니다. 파이썬에서는 스레드와 태스크가 동일한 프로세스에서 동일한 CPU에서 실행됩니다. 즉, 하나의 CPU가 비동시 코드의 모든 작업과 스레드 또는 작업을 설정하는 추가 작업을 수행하고 있음을 의미합니다. 10 초 이상 걸립니다 : 파이썬의 선은 우리에게 무언가를 할 수있는 한 가지 분명한 방법이 있어야한다고 말하지만 파이썬에는 우리 프로그램에 동시성을 도입하는 여러 가지 방법이 있습니다. 선택하는 가장 좋은 방법은 특정 사용 사례에 따라 달라집니다. 비동기 패러다임은 스레딩 이나 멀티 프로세싱에 비해 동시성이 높은 워크로드(예: 웹 서버)에 더 잘 확장되지만 코드(및 종속성)가 완전히 이점을 얻으려면 비동기화되어야 합니다. 파이썬을 비판하는 토론은 종종 파이썬 코드의 여러 스레드를 방지하는 글로벌 인터프리터 잠금 (GIL로 불리는)으로 알려진 것을 손가락으로 가리키며 다중 스레드 작업에 파이썬을 사용하는 것이 어떻게 어려운지에 대해 이야기합니다. 동시에 실행됩니다. 이 때문에 파이썬 멀티 스레딩 모듈은 파이썬 개발자가 아니고 C ++ 또는 Java와 같은 다른 언어에서 오는 경우 예상대로 작동하지 않습니다.

특정 사항을 고려하는 한 동시에 또는 병렬로 실행되는 파이썬에서 코드를 작성하고 결과 성능에 뚜렷한 차이를 만들 수 있음을 분명히해야합니다. 아직 읽지 않았다면, 탑탈 엔지니어링 블로그에서 루비의 동시성과 병렬처리에 관한 Eqbal Quran의 기사를 살펴보는 것이 좋습니다. 더미는 다중 처리 모듈의 정확한 복제본입니다. 유일한 차이점은 멀티 프로세싱이 프로세스와 함께 작동하는 반면 더미 모듈은 스레드를 사용한다는 것입니다 (일반적인 파이썬 제한 사항이 있습니다). 따라서 하나에 적용되는 모든 것이 다른 하나에 적용됩니다. 그것은 매우 쉽게 앞뒤로 두 사이 홉. 일부 프레임 워크 호출이 IO 또는 CPU 바인딩되어 있는지 확실하지 않은 경우 예비 프로그래밍에 특히 적합합니다. Manager()에서 반환된 관리자는 유형 목록, 지시자, 네임스페이스, 잠금, RLock, 세마포어, 경계세마포어, 조건, 이벤트, 장벽, 큐, 값 및 배열을 지원합니다. 예를 들어, 무료 보너스 : 파이썬 숙달에 대한 5 가지 생각, 로드맵과 파이썬 기술을 다음 단계로 끌어 올리는 데 필요한 사고 방식을 보여주는 파이썬 개발자를위한 무료 코스. 이 예제에서는 다소 어리석은 함수를 사용하여 CPU에서 실행하는 데 시간이 오래 걸리는 함수를 만듭니다. 이 함수는 각 숫자의 제곱 합계를 0에서 전달 값으로 계산합니다.

여기서 프로세스는 거의 완전히 다른 프로그램으로 생각할 수 있지만 기술적으로는 일반적으로 리소스에 메모리, 파일 핸들 및 이와 같은 것이 포함된 리소스 모음으로 정의됩니다. 그것에 대해 생각하는 한 가지 방법은 각 프로세스가 자체 Python 인터프리터에서 실행된다는 것입니다. 사실상 참조 파이썬 구현-CPython-GIL, 이것은 모든 파이썬 구현의 사실이 아니다. 예를 들어 .NET 프레임워크를 사용하는 파이썬 구현인 IronPython에는 GIL이 없으며 Java 기반 구현인 Jython도 없습니다. 여기에서 파이썬 구현 의 작업 목록을 찾을 수 있습니다. 이제 예제의 비동시 버전을 살펴보겠습니다. 세션() 개체입니다. 요청에 대한 설명서를 볼 때 반드시 쉽게 알 수는 없지만이 문제를 읽는 것은 각 스레드에 대해 별도의 세션이 필요하다는 것이 매우 분명해 보입니다. 파이썬 3.2 이후 원래 기사에서 만지지 않은 새로운 것은 동시.futures 패키지입니다.