IT/Python3
비동기 처리 sample
클라우드 개발자 앙몬드
2021. 3. 18. 20:25
반응형
노드js에서나 보던 비동기 처리를, 파이썬에서도 보게 될 줄이야...
파일쓰기에서 비동기 처리가 필요하였기에 테스트성으로 개발한 용도입니다.
import boto3, json, pathlib, sys, asyncio, logging, itertools
from datetime import datetime
from aiofile import AIOFile, Reader, Writer, async_open
async def 내용을_생성하고_파일쓰기_호출하는_함수() :
for i in range(10000) :
한페이지 = []
for j in range(10000) : 한페이지.append(str(i) + "\n")
asyncio.create_task(파일쓰기함수(한페이지))
#await asyncio.create_task(파일쓰기함수(한페이지))
async def 파일쓰기함수(한페이지) :
with open("temp2.txt", "a") as 파일 : 파일.writelines(한페이지)
async def 주황버섯의_함수() :
print("시작!")
시작시간 = datetime.now()
await asyncio.create_task(내용을_생성하고_파일쓰기_호출하는_함수())
끝난시간 = datetime.now()
print(f"{시작시간} -> {끝난시간}")
print(f"총 걸린시간 : {끝난시간 - 시작시간}")
def 핑크빈의_파일쓰기_검증함수() :
print("검증몬 출동")
검증결과 = { }
with open("temp2.txt", "r") as 파일 :
한줄 = 파일.readline()
while 한줄 != "" :
try :
검증결과[한줄] += 1
except Exception as e :
검증결과[한줄] = 1
한줄 = 파일.readline()
for k,v in 검증결과.items() :
if v != 10000 : print(f"{k} : {v}")
#print(f"{k} : {v}")
if __name__ == "__main__" :
#핑크빈의_파일쓰기_검증함수()
#exit(0)
물범의_이벤트루프 = asyncio.get_event_loop()
물범의_이벤트루프.run_until_complete(주황버섯의_함수())
물범의_이벤트루프.close()
반응형