Python Multiprocessing으로 API 호출 속도 향상시키기: 여러 스레드로 한 번에 처리하기
메일 보내는 API 가 response 가 너무 느리다
최근 이메일 API를 활용해서 사람들에게 이메일을 보내고 있는데 이게 API를 쓰면 응답이 오기까지가 시간이 꽤 걸린다.. 따라서 여러개의 thread 로 돌리면 어떨까 라는 생각을 했다.
역시 파이썬에는 이게 매우 쉽게 할수 있도록 되어있었다!
Multiprocess 사용하기
예를 들어 어떤 함수가 5초 걸린다고 해보자
1
2
3
def print_what_i_have(n):
print(n)
time.sleep(5)
이 함수를 5번 실행한다면 총 25초가 걸리겠지만 5개의 thread 로 실행한다면 실행시간이 총 5초로 매우 짧아 질 것이다!
1
2
3
4
5
6
7
8
9
10
11
12
import multiprocessing
import time
if __name__ == "__main__":
jobs = [1,2,3,4,5]
processes = []
for job in jobs:
p = multiprocessing.Process(target=print_what_i_have, args=(job,))
processes.append(p)
p.start()
for p in processes:
p.join() # 해당 프로세스가 끝나길 기다린다
이렇게 하면 한방에 후다닥 가능하다! 물론 남발하면 서버의 CPU 가 힘들어 할테니 조심해야한다!
This post is licensed under CC BY 4.0 by the author.