Python 다중 처리 자습서 : 다중 처리 모듈을 사용하여 병렬로 코드 실행

 

파이썬 3.6 버전 이전에 사용한 방식으로 보이는데  참고하면 좋을 것 같습니다.

 

https://www.youtube.com/watch?v=fKl2JW_qrso 

 

 

# 파일명: async_api.py
# 실행 환경: cmd shell
# python async_api.py

import requests
import asyncio
import time 
import multiprocessing
import concurrent

COUNT = 10

def ping_local(sec):
    print('start...')
    time.sleep(sec)
    return('192.168.1.1')  # FAKE request... 

if __name__ == '__main__':
    start = time.perf_counter()

    with concurrent.futures.ProcessPoolExecutor() as executor:
        secs = [i for i in range(COUNT, 0, -1)]
        results = executor.map(ping_local, secs)
        for r in results:
            print(r)
        
    finish = time.perf_counter()
    print(f'걸린 시간: {round(finish-start, 2)} 초')
    
'''
    with concurrent.futures.ProcessPoolExecutor() as executor:
        secs = [i for i in range(COUNT, 0, -1)]
        results = [executor.submit(ping_local, secs[sec]) for sec in range(COUNT)]        
        for f in concurrent.futures.as_completed(results):
            print(f.result())
'''            

    
'''
    processes = []
        
    for _ in range(COUNT):                                    # 0.15초
        p = multiprocessing.Process(target=ping_local, args=[0.15])
        p.start()
        processes.append(p)
    
    for p in processes:
        p.join()
#-------------------------------
'''

'''
#-------------------------------
import asyncio
import time

async def find_users_async(n):
    for i in range(1, n + 1):
        print(f'{n}명 중 {i}번 째 사용자 조회 중 ...')
        await asyncio.sleep(1)  # 비동기 함수에서 사용하는 sleep()
    print(f'> 총 {n} 명 사용자 비동기 조회 완료!')

    
async def process_async():
    start = time.time()
    await asyncio.wait([
        find_users_async(3),
        find_users_async(2),
        find_users_async(1),
    ])
    end = time.time()
    print(f'>>> 비동기 처리 총 소요 시간: {end - start}')


if __name__ == '__main__':
    asyncio.run(process_async())
'''

반응형

+ Recent posts