나는 만들고 응용했다. 이 응용 프로그램에서는 다중 처리 라이브러리를 사용합니다. 이 애플리케이션에서는 카프카 (Kafka)에서 데이터를 소비하고 Python 대기열에 두 개의 프로세스 (동일한 클래스의 인스턴스)를 돌린다. 내가 (그래서 별도의 스레드가 별도의 CPU 스레드에 매핑되는) 여러/별도의 CPU를 사용할 필요가 멀티 스레딩에 대해 얘기하기 위해 이해 Python multiprocessing파이썬 다중 처리 및 concurency 대 paralellism
Q1. Is it concurrency or is it parallelism?
Q2. Is it multithreading or is it multiprocessing?
Q3. How does Python maps Processes to CPUs? (does this question make sense?)
:
이 내가 사용하는 라이브러리입니다.
다중 처리에 대해 말하기 위해 두 프로세스에 별도의 메모리 공간을 사용해야합니까? 맞습니까?
하나의 응용 프로그램 인스턴스에서 두 개의 프로세스를 돌리면 동시성에 대해 이야기합니다.
위의 응용 프로그램을 여러 번 돌리면 병렬 처리에 대해 이야기 할 수 있습니까? (여러 CPU, 별도의 메모리 공간 사용)?
나는 다음과 같이 파이썬 라이브러리를 정의하는 참조 : Python multiprocessing library
The multiprocessing package offers both local and remote concurrency
...
Due to this, the multiprocessing module allows the programmer to fully leverage multiple processors on a given machine.
...
A prime example of this is the Pool object which offers a convenient means of parallelizing the execution of a function across multiple input values, distributing the input data across processes (data parallelism).
파이썬이 멀티 스레딩을하는지 확실하지 않다는 뜻입니다. Java => JVM에서 응용 프로그램 스레드 (또는 JVM 스레드)를 OS 스레드에 매핑합니까? – BlueTomato
JVM에서 Java는 OS 스케쥴러에 스레드를 남긴다. 아는 한 JVM은 GIL 제한을 겪지 않는다. –
어떤 구현을 사용하고 있는지 알면 파이썬에 대해서 확신 할 수있다. 가장 일반적인 cPython은 GIL 문제가있어 효과적인 멀티 스레딩을 할 수 없습니다. – GPhilo