멀티프로세싱은 여러 프로세스를 동시에 실행할 수 있는 Python 프로그래밍의 널리 사용되는 기술로, 종종 성능이 향상되고 시스템 리소스를 보다 효율적으로 사용할 수 있습니다. 이 기사에서는 멀티 프로세싱 Python의 라이브러리, 특히 다음 사항에 중점을 두고 있습니다. 지도 기능. map 함수를 사용하면 목록과 같은 iterable의 각 항목에 함수를 적용하고 결과와 함께 새 목록을 반환할 수 있습니다. 멀티프로세싱을 활용하면 이 프로세스를 병렬화하여 효율성과 확장성을 높일 수 있습니다.
이 기사에서는 맵 기능을 사용한 다중 처리가 탁월한 솔루션이 될 수 있는 문제를 탐색하고, 관련 라이브러리 및 기능에 대해 논의하고, 코드에 대한 단계별 설명을 제공하고, 백본을 기반으로 구축되는 관련 주제를 탐구합니다. 멀티프로세싱과 맵 기능.
다중 처리 맵: 문제 및 해결 방법
우리가 해결하려는 문제는 목록, 튜플 또는 반복을 지원하는 기타 객체와 같은 대규모 반복 가능 항목의 각 항목에 함수를 적용하는 성능과 효율성을 향상시키는 것입니다. 이러한 작업에 직면했을 때 내장된 맵 기능이나 목록 이해를 사용하는 것은 상당히 느리고 비효율적일 수 있습니다.
해결책은 Python의 다중 처리 라이브러리, 특히 다음을 활용하는 것입니다. 풀 클래스와 그 지도 방법. 을 사용하여 다중 처리 Pool.map() 함수, 여러 프로세스에 걸쳐 함수 실행을 분산할 수 있습니다.
코드의 단계별 설명
코드를 분석하고 다중 처리 맵 기능을 효과적으로 사용하는 방법을 살펴보겠습니다.
import multiprocessing import time def square(n): time.sleep(0.5) return n * n # Create the list of numbers numbers = list(range(10)) # Initialize the multiprocessing Pool pool = multiprocessing.Pool() # Use the map function with multiple processes squared_numbers = pool.map(square, numbers) print(squared_numbers)
- 먼저 수입 멀티 프로세싱 Python에서 병렬 처리를 활용하는 데 필요한 도구가 포함된 모듈입니다.
- 라는 함수를 만듭니다. 광장 이는 단순히 XNUMX초 동안 잠을 자고 입력 인수의 제곱을 반환합니다. 이 함수는 완료하는 데 적당한 시간이 걸리는 계산을 시뮬레이션합니다.
- 라는 목록을 생성합니다. 숫자, 여기에는 0부터 9(포함)까지의 정수가 포함됩니다.
- 초기화 풀 다중 처리 모듈의 개체입니다. 풀 개체는 작업을 병렬화하는 데 사용할 작업자 프로세스를 관리하는 수단으로 사용됩니다.
- 전화 지도 풀 개체에 대한 메서드를 전달하고 광장 기능과 숫자 목록. 그런 다음 맵 메서드는 풀에서 사용 가능한 작업자 프로세스를 사용하여 숫자 목록의 각 항목에 동시에 제곱 함수를 적용합니다.
- 숫자 목록의 제곱 값을 포함해야 하는 squared_numbers의 결과 목록을 인쇄합니다.
Python 다중 처리 라이브러리
파이썬 멀티 프로세싱 라이브러리는 프로그램에서 병렬성을 구현하는 직관적인 수단을 제공합니다. 다음과 같은 높은 수준의 추상화를 제공하여 일반적으로 병렬 프로그래밍과 관련된 일부 복잡성을 가립니다. 풀. Pool 클래스는 여러 프로세스에 걸쳐 작업 배포를 단순화하여 사용자가 번거로움을 최소화하면서 병렬 처리의 이점을 경험할 수 있도록 합니다.
Python Itertools 모듈 및 관련 기능
다중 처리는 많은 병렬 작업을 위한 탁월한 솔루션이지만 Python은 유사한 요구 사항을 충족하는 다른 라이브러리와 도구도 제공한다는 점을 언급할 가치가 있습니다. 예를 들어 itertools 모듈은 iterable에서 작동하는 다양한 기능을 제공하며 종종 효율성이 향상됩니다. 일부 itertools 기능은 다음과 같습니다. 아이맵() and imap_unordered() iterable에 함수를 적용하는 프로세스를 병렬화할 수 있습니다. 그러나 itertools는 주로 반복자 기반 솔루션에 중점을 두는 반면, 다중 처리 라이브러리는 병렬 처리에 대한 보다 포괄적인 접근 방식을 제공하여 맵과 같은 기능 이상의 추가 도구와 기능을 제공한다는 점에 유의하는 것이 중요합니다.