import time
import asyncio
input = [{"비동기 처리" :"병렬적,non-block, python 비동기asyncio"},{"동기 처리 " : "직렬적 ,blocking, timesleep()"}]
result = [(list(d.keys())[0],list(d.values())[0])for d in input]
result_str = [f'{key}:{values}'for key,values in result]
print('\n'.join(result_str))
async def find_users_async(n):
for i in range(1, n + 1):
print(f'{n}명 중 {i}번 째 사용자 조회 중 ...')
await asyncio.sleep(1)
print(f'> 총 {n} 명 사용자 비동기 조회 완료!')
async def find_user(n):
for i in range (1, n+1):
print(f'total {n} in {i} users !')
await asyncio.sleep(1)
print(f'total {n} users asynchronize')
async def process_async():
start =time.time()
await asyncio.wait([
find_user(3),
find_user(2),
find_user(1),
])
end =time.time()
print(f'>> totla async time : {end-start}')
if __name__=="__main__":
asyncio.run(process_async())
• 웹 애플리케이션에서 사용자가 파일을 업로드하고자 할 때
keys, values = zip(*[(list(d.keys())[0], list(d.values())[0]) for d in input_data])
키 리스트와 값 리스트를 짝지어 튜플의 리스트로 만듭니다
zip() 함수를 이용하여 두 리스트의 요소를 쌍으로 묶어 새로운 리스트를 생성합니다.
이는 리스트 컴프리헨션 내에서 반복적인 인덱싱을 피할 수 있는 효율적인 방법입니다.
언패킹: * 연산자를 사용하여 튜플의 리스트를 keys와 values 변수에 언패킹합니다.