{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 비동기 파이썬" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 동기적으로 5개 사이트의 소스 가져오기 " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from time import time\n", "import requests\n", "\n", "urls = [\"https://www.naver.com\", \"http://www.google.com\", \"https://www.nytimes.com\", \"https://www.mlb.com\", \"https://www.kakaocorp.com\"]\n", "\n", "begin = time()\n", "result = []\n", "for url in urls:\n", " response = requests.get(url)\n", " page = response.text\n", " result.append(\"{0} Bytes\".format(len(page)))\n", "\n", "print(result)\n", "end = time()\n", "print('실행 시간: {0:.3f}초'.format(end - begin))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 비동기적으로 5개 사이트의 소스 가져오기 " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from time import time\n", "import requests\n", "import asyncio\n", "\n", "urls = [\"https://www.naver.com\", \"http://www.google.com\", \"https://www.nytimes.com\", \"https://www.mlb.com\", \"https://www.kakaocorp.com\"]\n", "\n", "\n", "async def fetch(url):\n", " response = await loop.run_in_executor(None, requests.get, url) # run_in_executor 사용\n", " page = response.text\n", " return \"{0} Bytes\".format(len(page))\n", "\n", "\n", "async def main():\n", " futures = [asyncio.ensure_future(fetch(url)) for url in urls]\n", " # 태스크(퓨처) 객체를 리스트로 만듦\n", " result = await asyncio.gather(*futures) # 결과를 한꺼번에 가져옴\n", " print(result)\n", "\n", "\n", "begin = time()\n", "loop = asyncio.get_event_loop() # 이벤트 루프를 얻음\n", "loop.run_until_complete(main()) # main이 끝날 때까지 기다림\n", "loop.close() # 이벤트 루프를 닫음\n", "end = time()\n", "print('실행 시간: {0:.3f}초'.format(end - begin))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }