• multiprocess와 multithread의 개념, 차이, 장단점

https://velog.io/@xxhaileypark/%EB%A9%80%ED%8B%B0-%EC%8A%A4%EB%A0%88%EB%93%9CMulti-Thread-%EB%A9%80%ED%8B%B0-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4Multi-process

 

멀티 스레드(Multi Thread) & 멀티 프로세스(Multi process)

프로세스(Process)란? 프로그램 : 어떤 작업을 위해 실행할 수 있는 파일. 정적인 개념 프로세스 : 프로그램이 메모리에 올라와 cpu를 할당받고 프로그램이 실행되고 있는 상태. 동적인 개념 프로세

velog.io

 

  • python 기본 패키지 multiprocessing 사용법(multi-process)

https://velog.io/@finallazy/Python-multiprocessing-Pool

 

Python - Pool로 함수를 병렬 처리

multiprocessing 모듈을 이용하여 CPU 개수에 맞게 병렬처리를 해보자

velog.io

  • dask 사용법 

https://chealin93.tistory.com/288

 

Dask 패키지 사용 in Python

Dask는 병렬처리를 지원하는 Python Library 대규모 데이터의 분산처리 지원 Pandas와 Numpy형식을 그대로 계산지원 Delayed라는 함수 형식으로 함수를 병렬로 지원 최적화된 Dynamic task scheduling 지원 Dask Arr

chealin93.tistory.com

 

개인의견: multi-process를 쓰거나 multi-thread를 쓰는걸 선택하는 상황에서 각각 장단점이 있다. 

dask패키지 자체를 구현할때 python 기본패키지인 multiprocessing을 사용하기때문에 사용성을 높이고 속도가 좀 더 느릴 수 있다고 생각한다. 

프로세스끼리는 같은 객체를 사용할 수 없고, 프로세스 수만큼 데이터나 모델이 만들어지면서 메모리 사용이 배로 늘어나게 된다. 

shared memory를 사용하면 해결될 수 있지만 thread만큼 같은 객체를 공유하는데 빠르지 않다. 

객체를 프로세스 내에서 새로 복사하기 때문에 multi-processing이 multi-threading보다 오래걸림. 

그렇기에 한번만 선언한다면 processing이 빠름

'프로그래밍 > 병렬처리' 카테고리의 다른 글

Dask 패키지 사용 in Python  (1) 2023.11.20

Dask는 병렬처리를 지원하는 Python Library

  • 대규모 데이터의 분산처리 지원
  • Pandas와 Numpy형식을 그대로 계산지원
  • Delayed라는 함수 형식으로 함수를 병렬로 지원
  • 최적화된 Dynamic task scheduling 지원

 

Dask Array

import dask.array as da
f = h5py.File('myfile.hdf5')
x = da.from_array(f['/big-data'], chunks = (1000, 1000))

x - x.mean(axis=1).compute()

 

Dask DataFrame

import dask.dataframe as dd
df = dd.read_csv('file.csv')
df.groupby(df.user_id).value.mean().compute()

 

Dask Bag

import dask.bag as db
b = db.read_text('file.json.gz').map(json.loads)
b.pluck('name').frequencies().topk(10, lamba pair: pair[1]).compute()

 

Dask Delayed

 

from dask import delayed
L = []
for fn in filenames:
	data = delayed(load)(fn)
    L.append(delayed(process)(data))
    
result = delayed(summarize)(L)
result.compute()

'프로그래밍 > 병렬처리' 카테고리의 다른 글

multi-process vs multi-thread  (2) 2023.11.20

+ Recent posts