-
[TIL] 내일 배움 캠프 47일차 10/14 - ItisFuture내일배움캠프/TIL 2022. 10. 14. 20:04
오늘의 시행착오
#1 Import
해당 원본 파일이 없는 경우에서 가져올 때 일어나는 에러를 봤다. 가상환경이 켜지지 않아서 그려러니하고 냉큼 가상환경을 실행했으나 똑같이 남아있었고,
해결한 뒤 생각한 원인은 눈에 편한 테마를 찾으면서 이것 저것 바꾸다가 정상적으로 프로그램을 종료하지 않았다
"간단하게도 vscode의 인터프리터를 실행하면 됐다."
멍청한나#2 async/await
오늘 맛보기 느낌으로 비동기 함수 코루틴을 공부를 하는 도중 몇가지 시행착오가 있었다.
#2-1 jupyter notebook & vscode
RuntimeError: asyncio.run() cannot be called from a running event loop
jupyter노트북에서 코루틴 함수를 사용하기 위해서 asyncio.run()을 실행했으나, 이벤트 루프 중에는 사용될 수 없다는 에러가 떴다.
처음 직면하여 구글링을 통해서 해결책을 찾았다.
awit을 앞에 붙여주는 것이다.
"asyncio.run() cannot be called from a running event loop" when using Jupyter Notebook
I would like to use asyncio to get webpage html. I run the following code in jupyter notebook: import aiofiles import aiohttp from aiohttp import ClientSession async def get_info(url, session): ...
stackoverflow.com
그렇다면 asyncio.run()은 무엇이냐 asyncio이벤트 루프를 관리하고 비동기 생성기를 종료하는 역할이고
다른 asyncio이벤트 루프가 동일한 스레드에서 실행 중일 때 이 함수를 호출할 수 없다는 것을 보았다.
그렇다면 주피터 노트북의 셀들은 동시성을 띈 비동기로 돌아가는 것일까?
그렇다. 동시의 셀을 두개 동시에 실행을 하였고 정상적으로 실행됐다.
주피터 노트북은 각각 하나의 셀을 다른 파일을 연것 마냥 편리하다고 생각했는데 비동기를 공부하니 뭔가 시야가 넓어진듯한 느낌이 들어서 좋았다.
#2-2 create_task()
create_task메서드는 작업을 생성할 뿐이지 실제로 코루틴이 수행되는 것은 아니라고 하는데 await전까지는 실행이 되는 것이었다. 또한 동시성을 띄기 때문에 내가 예상한대로 흘러가지 않았다. 이 부분은 내일 하루 종일 조져볼 것이다.
'내일배움캠프 > TIL' 카테고리의 다른 글
[TIL] 내일 배움 캠프 46일 10/13 - ItisFuture (1) 2022.10.13 [TIL] 내일 배움 캠프 45일차 10/12 - ItisFuture (0) 2022.10.12 [TIL] 내일 배움 캠프 44일차 10/11 - ItisFuture (0) 2022.10.11 [TIL] 내일 배움 캠프 41일차 10/8 - ItisFuture (0) 2022.10.08 [TIL] 내일 배움 캠프 40일차 10/7 - ItisFuture (0) 2022.10.07