반응형
파이썬을 이용하며, 속도를 개선하기 위한 방법으로 병렬처리를 할 수 있습니다.
1. threading 모듈
import threading
def print_numbers(n, m):
for i in range(n, m):
print(i)
threads = []
for i in range(10):
t = threading.Thread(target=print_numbers, args=(i, 11))
t.start()
threads.append(t)
for t in threads:
t.join()
threading 모듈은 스레드 기반, multiprocessing 모듈은 프로세스 기반으로 동작합니다. 따라서, 속도 차이가 발생할 수 있습니다.
일반적으로, CPU 바운드 작업(계산)은 multiprocessing을, I/O 바운드 작업(파일 입출력)은 threading을 사용하는 것이 성능이 더 좋을 수 있습니다.
이는 스레드가 프로세스와 달리 메모리를 공유하기 때문에, I/O 작업의 대기 시간이 발생할 때 다른 스레드가 동시에 작업을 수행할 수 있기 때문입니다.
2. threading return 값 가져오기
import threading
class MyThread(threading.Thread):
def __init__(self, arg1, arg2):
super().__init__()
self.arg1 = arg1
self.arg2 = arg2
self.result = None
def run(self):
# 스레드에서 실행될 코드
self.result = self.arg1 + self.arg2
def get_result(self):
return self.result
# 스레드 생성
t1 = MyThread(1, 2)
t2 = MyThread(3, 4)
# 스레드 실행
t1.start()
t2.start()
# 스레드가 종료될 때까지 대기
t1.join()
t2.join()
# 스레드 결과 값 출력
print("Thread 1 result:", t1.get_result())
print("Thread 2 result:", t2.get_result())
3. multiprocessing 모듈
https://sjblog1.tistory.com/74
반응형
'컴퓨터 > Python' 카테고리의 다른 글
git 명령어 (0) | 2023.05.08 |
---|---|
[Python] 파이썬, 서울시 버스도착정보 공공데이터 (0) | 2023.04.17 |
[Python] 파이썬, multiprocessing 간단 예제 (0) | 2023.03.27 |
[Python] 파이썬, A value is trying to be set on a copy of a slice from a DataFrame 경고 (0) | 2023.03.26 |
[Python] 파이썬, sqlite3 사용하기 (0) | 2023.03.23 |