SlideShare a Scribd company logo
1 of 20
Python3 and AsyncIO
Sharing about 'experience of applying'
2018.03.20
Park Jae Hong
Contents
1. Python 3
a. 3.6์œผ๋กœ ์‹œ์ž‘
b. ์ ์šฉ ์ˆœ์„œ
c. ์ฃผ์š” ๋ฌธ๋ฒ• ๋ณ€ํ™”
d. ์ด์Šˆ๋“คโ€ฆ
e. ์–ผ๋งˆ ๋‚จ์ง€ ์•Š์•˜๋‹ค
2. AsyncIO
a. ์†Œ๊ฐœ
b. ์ผ๋ฐ˜ ์˜ˆ์ œ
c. ์ ์šฉ ์˜ˆ์ œ
d. ์„ฑ๋Šฅ ์ฐจ์ด
e. ์—…๋ฌด ์ ์šฉ ์‚ฌ๋ก€
3. Summary
a. Python3
b. AsyncIO
1.Python 3
1. Python3 - a. 3.6์œผ๋กœ ์‹œ์ž‘
โ— async def์™€ await๋Š” ํŒŒ์ด์ฌ 3.5์—์„œ ์ถ”๊ฐ€๋˜์—ˆ์Œ
โ— ๋”ฐ๋ผ์„œ ๊ทธ ์ดํ•˜ ๋ฒ„์ „์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ
โ— ํŒŒ์ด์ฌ 3.4์—์„œ๋Š” @asyncio.coroutine ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋กœ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋ฃจํ‹ด์„ ์ƒ์„ฑ
โ— 3.6(stable version)์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š”๊ฒƒ์„ ์ถ”์ฒœ
1. Python3 - b. ์ ์šฉ ์ˆœ์„œ
1. Python 3.6 Download(https://www.python.org/)
2. Read Readme
a. configure
b. make
c. make test
d. sudo make install
3. install python package
a. using pip3.6
1. Python3 - c. ์ฃผ์š” ๋ฌธ๋ฒ• ๋ณ€ํ™”
Python 2 Python 3
int ๋‚˜๋ˆˆ ๊ฒฐ๊ณผ float print( 1/2 ) # 0
print( type(1/2) ) # <type 'int'>
print( 1/2 ) # 0.5
print( type(1/2) ) # <class 'float'>
print๋ฌธ ๊ด„ํ˜ธ ํ•„์ˆ˜ print( 'hello' ) # hello
print 'hello' # hello
print( 'hello' ) # hello
print 'hello' # Error! invalid syntax
str๊ณผ unicode ํ†ต์ผ print( type('hello') ) # <type 'str'>
print( type(u'hello') ) # <type 'unicode'>
print( type('hello') ) # <class 'str'>
print( type(u'hello') ) # <class 'str'>
long์€ int๋กœ ํ†ต์ผ print( 2**30 ) # 1073741824
print( type(2**30) ) # <type 'int'>
print( 2**100 ) #
1267650600228229401496703205376
print( type(2**100) ) # <type 'long'>
print( 2**30 ) # 1073741824
print( type(2**30) ) # <class 'int'>
print( 2**100 ) #
1267650600228229401496703205376
print( type(2**100) ) # <class 'int'>
1. Python3 - d. ์ด์Šˆ๋“ค...
1. int ๋‚˜๋ˆˆ๊ฒฐ๊ณผ float: ์‰ฌ์›€
2. print๋ฌธ ๊ด„ํ˜ธ ํ•„์ˆ˜: ์‰ฌ์›€
3. str๊ณผ unicode ํ†ต์ผ: ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์–ด๋ ค์›€
4. long๊ณผ int ํ†ต์ผ: ์‰ฌ์›€
5. dictionary์˜ iter~, view~ ์‹œ๋ฆฌ์ฆˆ ์‚ญ์ œ: ์‰ฌ์›€
6. ์™ธ๋ถ€ package๋“ค์˜ ํ˜ธํ™˜์„ฑ: ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๊ท€์ฐฎ์Œ
7. except Exception, e: -> except Exception as e: ์‰ฌ์›€
1. Python3 - e. ์–ผ๋งˆ ๋‚จ์ง€ ์•Š์•˜๋‹ค
โ— https://pythonclock.org/
2.AsyncIO
2. AsyncIO - a. ์†Œ๊ฐœ
2. AsyncIO - b. ์ผ๋ฐ˜ ์˜ˆ์ œ
# Example 1: synchronous requests
import requests
num_requests = 20
responses = [
requests.get('http://example.org/')
for i in range(num_requests)
]
2. AsyncIO - c. ์ ์šฉ ์˜ˆ์ œ
# Example 2: asynchronous requests
import asyncio
import requests
async def main():
loop = asyncio.get_event_loop()
futures = [
loop.run_in_executor(
None,
requests.get,
'http://example.org/'
)
for i in range(20)
]
for response in await asyncio.gather(*futures):
pass
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
2. AsyncIO - d. ์„ฑ๋Šฅ ์ฐจ์ด
2. AsyncIO - e. ์—…๋ฌด ์ ์šฉ ์‚ฌ๋ก€
loop = asyncio.get_event_loop() # ์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ์–ป์Œ
try_cnc_nodedata = loop.run_until_complete(cnc_nodedata.get_cnc_data(ACCOUNT_INFO, ACCOUNT_DOMAIN_MAP,
DOMAIN_INFO, start_datetime, end_datetime, req_date, headers, try_cnc_nodedata))
loop.close()
==========
def do_post_req():
return requests.post(url, data=json_data, headers=_headers, auth=(_id, _pwd), timeout=CONFIG["CNC_API_TIMEOUT"])
loop = asyncio.get_event_loop()
res = await loop.run_in_executor(None, do_post_req)
2. AsyncIO - e. ์—…๋ฌด ์ ์šฉ ์‚ฌ๋ก€(cont.)
โ— AsyncIO ์ ์šฉ ์ „
โ—‹ 270์ดˆ ์ •๋„ ์†Œ์š”.
โ—‹ domain์˜ ์ฆ๊ฐ€์— ๋”ฐ๋ผ ์†Œ์š” ์‹œ๊ฐ„ ์ฆ๊ฐ€
โ— AsyncIO ์ ์šฉ ํ›„
โ—‹ 60์ดˆ ์ •๋„ ์†Œ์š”
โ—‹ domain์˜ ์ฆ๊ฐ€์— ์˜ํ–ฅ๋ฐ›์ง€ ์•Š์Œ.
3.Summary
3. Summary - a. Python3
โ— Python์€ v3๋ฅผ ์จ์•ผ๋งŒ ํ•œ๋‹ค.
โ— v2 -> v3 ๋Š” ๋ช‡๋ช‡ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๊ทธ๋ฆฌ ์–ด๋ ต์ง€ ์•Š๋‹ค.
โ— ์ง€๊ธˆ ๋ฐ”๋กœ ๋„˜์–ด๊ฐ€์„ธ์š”~
3. Summary - b. AsyncIO
โ— IO๋น„์ค‘์ด ๋†’๋‹ค๋ฉด ๋ˆˆ์— ๋„๋Š” ์„ฑ๋Šฅ ๊ฐœ์„ !
โ— ๊ทธ๋™์•ˆ ๋ฌด์‹œํ•ด์™”๋˜ Python์˜ Multi Thread๋ฅผ ์ ๊ทน ํ™œ์šฉ.
โ— async, await, event loop, native coroutine ๋“ฑ์˜ ๊ฐœ๋…์€ study ํ•„์š”.
The End
reference
โ— https://zetawiki.com/wiki/Python_%EB%B2%84%EC%A0%84_2%EC%99%80_3
_%EC%B0%A8%EC%9D%B4
โ— https://dojang.io/mod/page/view.php?id=1167
โ— http://skipperkongen.dk/2016/09/09/easy-parallel-http-requests-with-python-
and-asyncio/

More Related Content

What's hot

ํŒŒ์ด์ฌ ์Šคํ„ฐ๋”” 15์žฅ
ํŒŒ์ด์ฌ ์Šคํ„ฐ๋”” 15์žฅํŒŒ์ด์ฌ ์Šคํ„ฐ๋”” 15์žฅ
ํŒŒ์ด์ฌ ์Šคํ„ฐ๋”” 15์žฅ
SeongHyun Ahn
ย 
141103 แ„Žแ…ฌแ„Žแ…กแ†ผแ„‹แ…ฏแ†ซ แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…ชแ†จแ„Œแ…กแ†ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
141103 แ„Žแ…ฌแ„Žแ…กแ†ผแ„‹แ…ฏแ†ซ แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…ชแ†จแ„Œแ…กแ†ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ141103 แ„Žแ…ฌแ„Žแ…กแ†ผแ„‹แ…ฏแ†ซ แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…ชแ†จแ„Œแ…กแ†ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
141103 แ„Žแ…ฌแ„Žแ…กแ†ผแ„‹แ…ฏแ†ซ แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…ชแ†จแ„Œแ…กแ†ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
Changwon Choe
ย 
Net debugging 3_แ„Œแ…ฅแ†ซแ„’แ…กแ†ซแ„‡แ…งแ†ฏ
Net debugging 3_แ„Œแ…ฅแ†ซแ„’แ…กแ†ซแ„‡แ…งแ†ฏNet debugging 3_แ„Œแ…ฅแ†ซแ„’แ…กแ†ซแ„‡แ…งแ†ฏ
Net debugging 3_แ„Œแ…ฅแ†ซแ„’แ…กแ†ซแ„‡แ…งแ†ฏ
Han-Byul Jeon
ย 
[2014 CodeEngn Conference 11] ๋ฐ•์„ธํ•œ - IE 1DAY Case Study KO
[2014 CodeEngn Conference 11] ๋ฐ•์„ธํ•œ - IE 1DAY Case Study KO[2014 CodeEngn Conference 11] ๋ฐ•์„ธํ•œ - IE 1DAY Case Study KO
[2014 CodeEngn Conference 11] ๋ฐ•์„ธํ•œ - IE 1DAY Case Study KO
GangSeok Lee
ย 
[2014 CodeEngn Conference 11] ์ด๊ฒฝ์‹ - ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ OS X ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„
[2014 CodeEngn Conference 11] ์ด๊ฒฝ์‹ - ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ OS X ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„[2014 CodeEngn Conference 11] ์ด๊ฒฝ์‹ - ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ OS X ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„
[2014 CodeEngn Conference 11] ์ด๊ฒฝ์‹ - ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ OS X ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„
GangSeok Lee
ย 
๋ง๊ณ 100 ๋ณด๋“œ๋กœ ๋†€์•„๋ณด์ž 3
๋ง๊ณ 100 ๋ณด๋“œ๋กœ ๋†€์•„๋ณด์ž 3๋ง๊ณ 100 ๋ณด๋“œ๋กœ ๋†€์•„๋ณด์ž 3
๋ง๊ณ 100 ๋ณด๋“œ๋กœ ๋†€์•„๋ณด์ž 3
์ข…์ธ ์ „
ย 

What's hot (20)

Mr.Robot CTF Write-Up (Korean version)
Mr.Robot CTF Write-Up (Korean version)Mr.Robot CTF Write-Up (Korean version)
Mr.Robot CTF Write-Up (Korean version)
ย 
ํŒŒ์ด์ฌ ์Šคํ„ฐ๋”” 15์žฅ
ํŒŒ์ด์ฌ ์Šคํ„ฐ๋”” 15์žฅํŒŒ์ด์ฌ ์Šคํ„ฐ๋”” 15์žฅ
ํŒŒ์ด์ฌ ์Šคํ„ฐ๋”” 15์žฅ
ย 
[Kerference] ์‹œ์ž‘! ๋ฆฌ๋ฒ„์‹ฑ - ๊น€์ข…๋ฒ”(KERT)
[Kerference] ์‹œ์ž‘! ๋ฆฌ๋ฒ„์‹ฑ - ๊น€์ข…๋ฒ”(KERT)[Kerference] ์‹œ์ž‘! ๋ฆฌ๋ฒ„์‹ฑ - ๊น€์ข…๋ฒ”(KERT)
[Kerference] ์‹œ์ž‘! ๋ฆฌ๋ฒ„์‹ฑ - ๊น€์ข…๋ฒ”(KERT)
ย 
แ„‰แ…ขแ†ซแ„ƒแ…ณแ„‡แ…กแ†จแ„‰แ…ณ
แ„‰แ…ขแ†ซแ„ƒแ…ณแ„‡แ…กแ†จแ„‰แ…ณแ„‰แ…ขแ†ซแ„ƒแ…ณแ„‡แ…กแ†จแ„‰แ…ณ
แ„‰แ…ขแ†ซแ„ƒแ…ณแ„‡แ…กแ†จแ„‰แ…ณ
ย 
ํŒŒ์ด์ฌ ์†Œ๊ฐœ
ํŒŒ์ด์ฌ ์†Œ๊ฐœ ํŒŒ์ด์ฌ ์†Œ๊ฐœ
ํŒŒ์ด์ฌ ์†Œ๊ฐœ
ย 
CTF WEB Back_END ๊ฐœ๋ฐœ๊ธฐ
CTF WEB Back_END ๊ฐœ๋ฐœ๊ธฐCTF WEB Back_END ๊ฐœ๋ฐœ๊ธฐ
CTF WEB Back_END ๊ฐœ๋ฐœ๊ธฐ
ย 
์ž˜ ์•Œ๋ ค์ง€์ง€ ์•Š์€ ์ˆจ์€ ์ง„์ฃผ, Winsock API - WSAPoll, Fast Loopback
์ž˜ ์•Œ๋ ค์ง€์ง€ ์•Š์€ ์ˆจ์€ ์ง„์ฃผ, Winsock API - WSAPoll, Fast Loopback์ž˜ ์•Œ๋ ค์ง€์ง€ ์•Š์€ ์ˆจ์€ ์ง„์ฃผ, Winsock API - WSAPoll, Fast Loopback
์ž˜ ์•Œ๋ ค์ง€์ง€ ์•Š์€ ์ˆจ์€ ์ง„์ฃผ, Winsock API - WSAPoll, Fast Loopback
ย 
141103 แ„Žแ…ฌแ„Žแ…กแ†ผแ„‹แ…ฏแ†ซ แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…ชแ†จแ„Œแ…กแ†ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
141103 แ„Žแ…ฌแ„Žแ…กแ†ผแ„‹แ…ฏแ†ซ แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…ชแ†จแ„Œแ…กแ†ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ141103 แ„Žแ…ฌแ„Žแ…กแ†ผแ„‹แ…ฏแ†ซ แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…ชแ†จแ„Œแ…กแ†ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
141103 แ„Žแ…ฌแ„Žแ…กแ†ผแ„‹แ…ฏแ†ซ แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…ชแ†จแ„Œแ…กแ†ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย 
[2017 Incognito] ์Šคํƒ ๊ตฌ์กฐ ๋ถ„์„์„ ํ†ตํ•œ ROP ๊ธฐ๋ฒ•์˜ ๋ชจ๋“  ๊ฒƒ
[2017 Incognito] ์Šคํƒ ๊ตฌ์กฐ ๋ถ„์„์„ ํ†ตํ•œ ROP ๊ธฐ๋ฒ•์˜ ๋ชจ๋“  ๊ฒƒ[2017 Incognito] ์Šคํƒ ๊ตฌ์กฐ ๋ถ„์„์„ ํ†ตํ•œ ROP ๊ธฐ๋ฒ•์˜ ๋ชจ๋“  ๊ฒƒ
[2017 Incognito] ์Šคํƒ ๊ตฌ์กฐ ๋ถ„์„์„ ํ†ตํ•œ ROP ๊ธฐ๋ฒ•์˜ ๋ชจ๋“  ๊ฒƒ
ย 
Net debugging 3_แ„Œแ…ฅแ†ซแ„’แ…กแ†ซแ„‡แ…งแ†ฏ
Net debugging 3_แ„Œแ…ฅแ†ซแ„’แ…กแ†ซแ„‡แ…งแ†ฏNet debugging 3_แ„Œแ…ฅแ†ซแ„’แ…กแ†ซแ„‡แ…งแ†ฏ
Net debugging 3_แ„Œแ…ฅแ†ซแ„’แ…กแ†ซแ„‡แ…งแ†ฏ
ย 
SECCON 2016 Online CTF [Memory Analysis] Write-Up (ver.korean)
SECCON 2016 Online CTF [Memory Analysis] Write-Up (ver.korean)SECCON 2016 Online CTF [Memory Analysis] Write-Up (ver.korean)
SECCON 2016 Online CTF [Memory Analysis] Write-Up (ver.korean)
ย 
[2017 Incognito] ์‹œ์Šคํ…œ ํ•ดํ‚น ๊ธฐ๋ฒ• ์ •๋ฆฌ
[2017 Incognito] ์‹œ์Šคํ…œ ํ•ดํ‚น ๊ธฐ๋ฒ• ์ •๋ฆฌ[2017 Incognito] ์‹œ์Šคํ…œ ํ•ดํ‚น ๊ธฐ๋ฒ• ์ •๋ฆฌ
[2017 Incognito] ์‹œ์Šคํ…œ ํ•ดํ‚น ๊ธฐ๋ฒ• ์ •๋ฆฌ
ย 
[2014 CodeEngn Conference 11] ๋ฐ•์„ธํ•œ - IE 1DAY Case Study KO
[2014 CodeEngn Conference 11] ๋ฐ•์„ธํ•œ - IE 1DAY Case Study KO[2014 CodeEngn Conference 11] ๋ฐ•์„ธํ•œ - IE 1DAY Case Study KO
[2014 CodeEngn Conference 11] ๋ฐ•์„ธํ•œ - IE 1DAY Case Study KO
ย 
Hello c++ world
Hello c++ worldHello c++ world
Hello c++ world
ย 
Nodejs_chapter9
Nodejs_chapter9Nodejs_chapter9
Nodejs_chapter9
ย 
[2014 CodeEngn Conference 11] ์ด๊ฒฝ์‹ - ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ OS X ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„
[2014 CodeEngn Conference 11] ์ด๊ฒฝ์‹ - ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ OS X ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„[2014 CodeEngn Conference 11] ์ด๊ฒฝ์‹ - ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ OS X ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„
[2014 CodeEngn Conference 11] ์ด๊ฒฝ์‹ - ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ OS X ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„
ย 
BSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUp
BSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUpBSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUp
BSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUp
ย 
Codegate 2014 - Bug Hunting Challenge [Track0]
Codegate 2014 - Bug Hunting Challenge [Track0]Codegate 2014 - Bug Hunting Challenge [Track0]
Codegate 2014 - Bug Hunting Challenge [Track0]
ย 
ํŒŒ์ด์„  ์‹ค์ „๊ณต๋žต-1
ํŒŒ์ด์„  ์‹ค์ „๊ณต๋žต-1ํŒŒ์ด์„  ์‹ค์ „๊ณต๋žต-1
ํŒŒ์ด์„  ์‹ค์ „๊ณต๋žต-1
ย 
๋ง๊ณ 100 ๋ณด๋“œ๋กœ ๋†€์•„๋ณด์ž 3
๋ง๊ณ 100 ๋ณด๋“œ๋กœ ๋†€์•„๋ณด์ž 3๋ง๊ณ 100 ๋ณด๋“œ๋กœ ๋†€์•„๋ณด์ž 3
๋ง๊ณ 100 ๋ณด๋“œ๋กœ ๋†€์•„๋ณด์ž 3
ย 

Similar to 20180320 python3 async_io

Python study 1๊ฐ• (์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ… ๋‚ด๋ถ€ ๊ฐ•์˜)
Python study 1๊ฐ• (์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ… ๋‚ด๋ถ€ ๊ฐ•์˜)Python study 1๊ฐ• (์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ… ๋‚ด๋ถ€ ๊ฐ•์˜)
Python study 1๊ฐ• (์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ… ๋‚ด๋ถ€ ๊ฐ•์˜)
์ •๋ช…ํ›ˆ Jerry Jeong
ย 
Google Protocol buffer
Google Protocol bufferGoogle Protocol buffer
Google Protocol buffer
knight1128
ย 
[KGC2014] ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก๊ธฐ ์œ„ํ•œ C++ - C# ํ˜ผํ•ฉ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„
[KGC2014] ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก๊ธฐ ์œ„ํ•œ C++ - C#  ํ˜ผํ•ฉ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„[KGC2014] ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก๊ธฐ ์œ„ํ•œ C++ - C#  ํ˜ผํ•ฉ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„
[KGC2014] ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก๊ธฐ ์œ„ํ•œ C++ - C# ํ˜ผํ•ฉ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„
Sungkyun Kim
ย 
Pycon korea - 2018 2to3 converter๋ฅผ ํ™œ์šฉํ•œ django ํ”„๋กœ์ ํŠธ python ๋ฒ„์ „์—… ์‚ฝ์งˆ๊ธฐ
Pycon korea - 2018 2to3 converter๋ฅผ ํ™œ์šฉํ•œ django ํ”„๋กœ์ ํŠธ python ๋ฒ„์ „์—… ์‚ฝ์งˆ๊ธฐPycon korea - 2018 2to3 converter๋ฅผ ํ™œ์šฉํ•œ django ํ”„๋กœ์ ํŠธ python ๋ฒ„์ „์—… ์‚ฝ์งˆ๊ธฐ
Pycon korea - 2018 2to3 converter๋ฅผ ํ™œ์šฉํ•œ django ํ”„๋กœ์ ํŠธ python ๋ฒ„์ „์—… ์‚ฝ์งˆ๊ธฐ
Royce Nam
ย 
Python - Module
Python - ModulePython - Module
Python - Module
YoungSu Son
ย 
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•
Daniel Kim
ย 

Similar to 20180320 python3 async_io (14)

Python study 1๊ฐ• (์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ… ๋‚ด๋ถ€ ๊ฐ•์˜)
Python study 1๊ฐ• (์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ… ๋‚ด๋ถ€ ๊ฐ•์˜)Python study 1๊ฐ• (์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ… ๋‚ด๋ถ€ ๊ฐ•์˜)
Python study 1๊ฐ• (์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ… ๋‚ด๋ถ€ ๊ฐ•์˜)
ย 
ํŒŒ์ด์ฌ์„ ๋ฐฐ์›Œ์•ผํ•˜๋Š” ์ด์œ  ๋ฐœํ‘œ์ž๋ฃŒ - ๊น€์—ฐ์ˆ˜
ํŒŒ์ด์ฌ์„ ๋ฐฐ์›Œ์•ผํ•˜๋Š” ์ด์œ  ๋ฐœํ‘œ์ž๋ฃŒ - ๊น€์—ฐ์ˆ˜ํŒŒ์ด์ฌ์„ ๋ฐฐ์›Œ์•ผํ•˜๋Š” ์ด์œ  ๋ฐœํ‘œ์ž๋ฃŒ - ๊น€์—ฐ์ˆ˜
ํŒŒ์ด์ฌ์„ ๋ฐฐ์›Œ์•ผํ•˜๋Š” ์ด์œ  ๋ฐœํ‘œ์ž๋ฃŒ - ๊น€์—ฐ์ˆ˜
ย 
Google Protocol buffer
Google Protocol bufferGoogle Protocol buffer
Google Protocol buffer
ย 
[KGC2014] ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก๊ธฐ ์œ„ํ•œ C++ - C# ํ˜ผํ•ฉ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„
[KGC2014] ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก๊ธฐ ์œ„ํ•œ C++ - C#  ํ˜ผํ•ฉ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„[KGC2014] ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก๊ธฐ ์œ„ํ•œ C++ - C#  ํ˜ผํ•ฉ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„
[KGC2014] ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก๊ธฐ ์œ„ํ•œ C++ - C# ํ˜ผํ•ฉ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„
ย 
๋ฐฑ๊ธฐ์„ ์˜ ์Šคํ”„๋ง ๋ถ€ํŠธ
๋ฐฑ๊ธฐ์„ ์˜ ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฐฑ๊ธฐ์„ ์˜ ์Šคํ”„๋ง ๋ถ€ํŠธ
๋ฐฑ๊ธฐ์„ ์˜ ์Šคํ”„๋ง ๋ถ€ํŠธ
ย 
Pycon korea - 2018 2to3 converter๋ฅผ ํ™œ์šฉํ•œ django ํ”„๋กœ์ ํŠธ python ๋ฒ„์ „์—… ์‚ฝ์งˆ๊ธฐ
Pycon korea - 2018 2to3 converter๋ฅผ ํ™œ์šฉํ•œ django ํ”„๋กœ์ ํŠธ python ๋ฒ„์ „์—… ์‚ฝ์งˆ๊ธฐPycon korea - 2018 2to3 converter๋ฅผ ํ™œ์šฉํ•œ django ํ”„๋กœ์ ํŠธ python ๋ฒ„์ „์—… ์‚ฝ์งˆ๊ธฐ
Pycon korea - 2018 2to3 converter๋ฅผ ํ™œ์šฉํ•œ django ํ”„๋กœ์ ํŠธ python ๋ฒ„์ „์—… ์‚ฝ์งˆ๊ธฐ
ย 
Object C - RIP
Object C - RIPObject C - RIP
Object C - RIP
ย 
Lecture 1: Introduction to Python and TensorFlow
Lecture 1: Introduction to Python and TensorFlowLecture 1: Introduction to Python and TensorFlow
Lecture 1: Introduction to Python and TensorFlow
ย 
Spring boot DI
Spring boot DISpring boot DI
Spring boot DI
ย 
Python - Module
Python - ModulePython - Module
Python - Module
ย 
200720 ๋ฐ”์ด์˜คํ˜‘ํšŒ ์ƒ๋ฌผ์ •๋ณดํ•™ ํŒŒ์ด์ฌ ๊ฐ•์˜
200720 ๋ฐ”์ด์˜คํ˜‘ํšŒ ์ƒ๋ฌผ์ •๋ณดํ•™ ํŒŒ์ด์ฌ ๊ฐ•์˜ 200720 ๋ฐ”์ด์˜คํ˜‘ํšŒ ์ƒ๋ฌผ์ •๋ณดํ•™ ํŒŒ์ด์ฌ ๊ฐ•์˜
200720 ๋ฐ”์ด์˜คํ˜‘ํšŒ ์ƒ๋ฌผ์ •๋ณดํ•™ ํŒŒ์ด์ฌ ๊ฐ•์˜
ย 
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•
ย 
08 ๋ชจ๋“ˆ
08 ๋ชจ๋“ˆ08 ๋ชจ๋“ˆ
08 ๋ชจ๋“ˆ
ย 
200718 ๋•์„ฑ์—ฌ๋Œ€ ์ƒ๋ฌผ์ •๋ณดํ•™ ๊ฐ•์˜ :: ์ƒ๋ฌผ์ •๋ณดํ•™ ํŒŒ์ด์ฌ
200718 ๋•์„ฑ์—ฌ๋Œ€ ์ƒ๋ฌผ์ •๋ณดํ•™ ๊ฐ•์˜ :: ์ƒ๋ฌผ์ •๋ณดํ•™ ํŒŒ์ด์ฌ200718 ๋•์„ฑ์—ฌ๋Œ€ ์ƒ๋ฌผ์ •๋ณดํ•™ ๊ฐ•์˜ :: ์ƒ๋ฌผ์ •๋ณดํ•™ ํŒŒ์ด์ฌ
200718 ๋•์„ฑ์—ฌ๋Œ€ ์ƒ๋ฌผ์ •๋ณดํ•™ ๊ฐ•์˜ :: ์ƒ๋ฌผ์ •๋ณดํ•™ ํŒŒ์ด์ฌ
ย 

20180320 python3 async_io

  • 1. Python3 and AsyncIO Sharing about 'experience of applying' 2018.03.20 Park Jae Hong
  • 2. Contents 1. Python 3 a. 3.6์œผ๋กœ ์‹œ์ž‘ b. ์ ์šฉ ์ˆœ์„œ c. ์ฃผ์š” ๋ฌธ๋ฒ• ๋ณ€ํ™” d. ์ด์Šˆ๋“คโ€ฆ e. ์–ผ๋งˆ ๋‚จ์ง€ ์•Š์•˜๋‹ค 2. AsyncIO a. ์†Œ๊ฐœ b. ์ผ๋ฐ˜ ์˜ˆ์ œ c. ์ ์šฉ ์˜ˆ์ œ d. ์„ฑ๋Šฅ ์ฐจ์ด e. ์—…๋ฌด ์ ์šฉ ์‚ฌ๋ก€ 3. Summary a. Python3 b. AsyncIO
  • 4. 1. Python3 - a. 3.6์œผ๋กœ ์‹œ์ž‘ โ— async def์™€ await๋Š” ํŒŒ์ด์ฌ 3.5์—์„œ ์ถ”๊ฐ€๋˜์—ˆ์Œ โ— ๋”ฐ๋ผ์„œ ๊ทธ ์ดํ•˜ ๋ฒ„์ „์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ โ— ํŒŒ์ด์ฌ 3.4์—์„œ๋Š” @asyncio.coroutine ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋กœ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋ฃจํ‹ด์„ ์ƒ์„ฑ โ— 3.6(stable version)์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š”๊ฒƒ์„ ์ถ”์ฒœ
  • 5. 1. Python3 - b. ์ ์šฉ ์ˆœ์„œ 1. Python 3.6 Download(https://www.python.org/) 2. Read Readme a. configure b. make c. make test d. sudo make install 3. install python package a. using pip3.6
  • 6. 1. Python3 - c. ์ฃผ์š” ๋ฌธ๋ฒ• ๋ณ€ํ™” Python 2 Python 3 int ๋‚˜๋ˆˆ ๊ฒฐ๊ณผ float print( 1/2 ) # 0 print( type(1/2) ) # <type 'int'> print( 1/2 ) # 0.5 print( type(1/2) ) # <class 'float'> print๋ฌธ ๊ด„ํ˜ธ ํ•„์ˆ˜ print( 'hello' ) # hello print 'hello' # hello print( 'hello' ) # hello print 'hello' # Error! invalid syntax str๊ณผ unicode ํ†ต์ผ print( type('hello') ) # <type 'str'> print( type(u'hello') ) # <type 'unicode'> print( type('hello') ) # <class 'str'> print( type(u'hello') ) # <class 'str'> long์€ int๋กœ ํ†ต์ผ print( 2**30 ) # 1073741824 print( type(2**30) ) # <type 'int'> print( 2**100 ) # 1267650600228229401496703205376 print( type(2**100) ) # <type 'long'> print( 2**30 ) # 1073741824 print( type(2**30) ) # <class 'int'> print( 2**100 ) # 1267650600228229401496703205376 print( type(2**100) ) # <class 'int'>
  • 7. 1. Python3 - d. ์ด์Šˆ๋“ค... 1. int ๋‚˜๋ˆˆ๊ฒฐ๊ณผ float: ์‰ฌ์›€ 2. print๋ฌธ ๊ด„ํ˜ธ ํ•„์ˆ˜: ์‰ฌ์›€ 3. str๊ณผ unicode ํ†ต์ผ: ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์–ด๋ ค์›€ 4. long๊ณผ int ํ†ต์ผ: ์‰ฌ์›€ 5. dictionary์˜ iter~, view~ ์‹œ๋ฆฌ์ฆˆ ์‚ญ์ œ: ์‰ฌ์›€ 6. ์™ธ๋ถ€ package๋“ค์˜ ํ˜ธํ™˜์„ฑ: ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๊ท€์ฐฎ์Œ 7. except Exception, e: -> except Exception as e: ์‰ฌ์›€
  • 8. 1. Python3 - e. ์–ผ๋งˆ ๋‚จ์ง€ ์•Š์•˜๋‹ค โ— https://pythonclock.org/
  • 10. 2. AsyncIO - a. ์†Œ๊ฐœ
  • 11. 2. AsyncIO - b. ์ผ๋ฐ˜ ์˜ˆ์ œ # Example 1: synchronous requests import requests num_requests = 20 responses = [ requests.get('http://example.org/') for i in range(num_requests) ]
  • 12. 2. AsyncIO - c. ์ ์šฉ ์˜ˆ์ œ # Example 2: asynchronous requests import asyncio import requests async def main(): loop = asyncio.get_event_loop() futures = [ loop.run_in_executor( None, requests.get, 'http://example.org/' ) for i in range(20) ] for response in await asyncio.gather(*futures): pass loop = asyncio.get_event_loop() loop.run_until_complete(main())
  • 13. 2. AsyncIO - d. ์„ฑ๋Šฅ ์ฐจ์ด
  • 14. 2. AsyncIO - e. ์—…๋ฌด ์ ์šฉ ์‚ฌ๋ก€ loop = asyncio.get_event_loop() # ์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ์–ป์Œ try_cnc_nodedata = loop.run_until_complete(cnc_nodedata.get_cnc_data(ACCOUNT_INFO, ACCOUNT_DOMAIN_MAP, DOMAIN_INFO, start_datetime, end_datetime, req_date, headers, try_cnc_nodedata)) loop.close() ========== def do_post_req(): return requests.post(url, data=json_data, headers=_headers, auth=(_id, _pwd), timeout=CONFIG["CNC_API_TIMEOUT"]) loop = asyncio.get_event_loop() res = await loop.run_in_executor(None, do_post_req)
  • 15. 2. AsyncIO - e. ์—…๋ฌด ์ ์šฉ ์‚ฌ๋ก€(cont.) โ— AsyncIO ์ ์šฉ ์ „ โ—‹ 270์ดˆ ์ •๋„ ์†Œ์š”. โ—‹ domain์˜ ์ฆ๊ฐ€์— ๋”ฐ๋ผ ์†Œ์š” ์‹œ๊ฐ„ ์ฆ๊ฐ€ โ— AsyncIO ์ ์šฉ ํ›„ โ—‹ 60์ดˆ ์ •๋„ ์†Œ์š” โ—‹ domain์˜ ์ฆ๊ฐ€์— ์˜ํ–ฅ๋ฐ›์ง€ ์•Š์Œ.
  • 17. 3. Summary - a. Python3 โ— Python์€ v3๋ฅผ ์จ์•ผ๋งŒ ํ•œ๋‹ค. โ— v2 -> v3 ๋Š” ๋ช‡๋ช‡ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๊ทธ๋ฆฌ ์–ด๋ ต์ง€ ์•Š๋‹ค. โ— ์ง€๊ธˆ ๋ฐ”๋กœ ๋„˜์–ด๊ฐ€์„ธ์š”~
  • 18. 3. Summary - b. AsyncIO โ— IO๋น„์ค‘์ด ๋†’๋‹ค๋ฉด ๋ˆˆ์— ๋„๋Š” ์„ฑ๋Šฅ ๊ฐœ์„ ! โ— ๊ทธ๋™์•ˆ ๋ฌด์‹œํ•ด์™”๋˜ Python์˜ Multi Thread๋ฅผ ์ ๊ทน ํ™œ์šฉ. โ— async, await, event loop, native coroutine ๋“ฑ์˜ ๊ฐœ๋…์€ study ํ•„์š”.