๐Ÿ”  Language/Python

cuttlepool ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ pip install cuttlepool ํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ๊ณ„์† import ์—๋Ÿฌ๊ฐ€ ๋‚˜์„œ ๋„ˆ๋ฌด ํ™”๊ฐ€ ๋‚ฌ๋‹ค. ๋‚ด๊ฐ€ ์‹คํ–‰์‹œํ‚ค๋Š” py๋Š” /mnt ๊ฒฝ๋กœ ์•„๋ž˜์— ์žˆ๊ณ  cuttlepool์€ /usr ๊ฒฝ๋กœ ์•„๋ž˜์— ์„ค์น˜ ๋๋‹ค. pip freeze๋กœ ์„ค์น˜๋œ ๋ชจ๋“ˆ๋„ ๋ณด๊ณ  ํ–ˆ๋Š”๋ฐ ์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ์—†์–ด์„œ ์งœ์ฆ์ด ๋‚ฌ๋‹ค. ์ด๊ธ€์€ ๋‚˜์™€ ๊ฐ™์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ํ—Œ์ •๊ธ€....โ˜… ์‹คํ–‰์‹œํ‚ค๊ณ ์žํ•˜๋Š” py ํŒŒ์ผ์•ˆ์— import sys sys.path.insert(0,'/usr ์–ด์ฉŒ๊ตฌ(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฒฝ๋กœ)') ํ•ด์ฃผ๋ฉด ๊ทน๋ฝ! ใ… ใ… ใ…  ๊ฐ™์€ /mnt ์•ˆ์— ์žˆ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ์„œ ์ €๋ ‡๊ฒŒ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋กœ ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ๊ฐ–๊ณ  ์˜ฌ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ํœด.. ๊ทธ๋Ÿผ ์ด๋งŒ.. ์ฆ๊ฑฐ์šด ๊ฐœ๋ฐœ์ƒํ™œ ๋˜์„ธ์š”~
python 3.x ๋ฒ„์ „์„ ์‚ฌ์šฉ์ค‘์— ๊ฐ‘์ž๊ธฐ ์ž˜ ๋˜๋˜ print("์‹œ์ž‘์‹œ๊ฐ„ :", datetime.datetime.now()) ์—ฌ๊ธฐ์„œ ์—๋Ÿฌ๋ฅผ ๋ฑ‰์—ˆ๋‹ค ๊ทธ๋ž˜์„œ ์„œ์น˜ํ•œ ๊ฒฐ๊ณผ ๋งจ ์œ„์— # -*- coding: utf-8 -*- ์ด๊ฑธ ๋ถ™์˜€๋Š”๋ฐ ๋˜ ์‹œ์ž‘์‹œ๊ฐ„ ์ €๋ถ€๋ถ„์ด ์ด๋Ÿฐ์‹์œผ๋กœ ๋‚˜์˜ค์งˆ ์•Š๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ print("์‹œ์ž‘์‹œ๊ฐ„ : {}".format(datetime.datetime.now())) ์ด๋ ‡๊ฒŒ ๋ฐ”๊ฟจ๋”๋‹ˆ ์ •์ƒ์ ์œผ๋กœ ๋‚˜์™”๋‹ค. ์™œ ๊ฐ‘์ž๊ธฐ ์ด๋ ‡๊ฒŒ ๋˜๋Š”๊ฑด์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค. ์–ด์จŒ๋“  ํ•ด๊ฒฐ
1. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด (Singleton Pattern) ์ด๋ž€? - ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด์œผ๋กœ์„œ, ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด(Singleton pattern)์„ ๋”ฐ๋ฅด๋Š” ํด๋ž˜์Šค๋Š”, ์ƒ์„ฑ์ž๊ฐ€ ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ํ˜ธ์ถœ๋˜๋”๋ผ๋„ ์‹ค์ œ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด๋Š” ํ•˜๋‚˜์ด๊ณ  ์ตœ์ดˆ ์ƒ์„ฑ ์ดํ›„์— ํ˜ธ์ถœ๋œ ์ƒ์„ฑ์ž๋Š” ์ตœ์ดˆ์˜ ์ƒ์„ฑ์ž๊ฐ€ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ์ฃผ๋กœ ๊ณตํ†ต๋œ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” DBCP(DataBase Connection Pool)์™€ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, ํ•œ๋ฒˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์ •์ ์œผ๋กœ ์˜ฌ๋ ค๋†“๊ณ , ์ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์ „์—ญ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ค„์—ฌ์ฃผ๋Š” ํŒจํ„ด์ด๋‹ค. 2. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ์“ฐ๋Š” ์ด์œ  (1) ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค. (2) ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋“ค์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์‰ฝ๋‹ค. (3) ..
1. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (Object-Oriented Programming, OOP)๋ž€? - ๋‹จ์–ด์˜ ๋œป๋ถ€ํ„ฐ ์‚ดํŽด๋ณด๋ฉด ๊ฐ€์žฅ ํ•ต์‹ฌ ๋‹จ์–ด๋Š” '๊ฐ์ฒด'์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ์ฒด๋Š” ๋ฌด์—‡์ผ๊นŒ? ์–ด๋– ํ•œ ์—ญํ• ์„ ํ•˜๋Š” ์‚ฌ๋ฌผ์ด๋‚˜ ์›€์ง์ด๋Š” ๊ฒƒ ๋ชจ๋‘ ๋‹ค ๊ฐ์ฒด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์  ๊ด€์ ์—์„œ ๋ณด๋ฉด, ํŠน์ • ์—ญํ• ์„ ํ•˜๋Š” ๋ฉ”์†Œ๋“œ,๋ณ€์ˆ˜, ์ž๋ฃŒ ๊ตฌ์กฐ ๋“ฑ์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ด๋Ÿฐ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ปค๋‹ค๋ž€ ํ‹€๋กœ ๋ณด๋ฉด, ํŠน์ • ์—ญํ• ๋ณ„๋กœ ์ž˜~ ๋ฌถ์–ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค. ์ด๋Ÿฐ ๊ฒƒ์„ ์—ผ๋‘ํ•ด ๋‘๊ณ  ์žฅ์ , ํŠน์ง• ๊ทธ๋ฆฌ๊ณ  ์„ค๊ณ„ ์›์น™ ๋“ฑ์„ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๋น ๋ฅด๋‹ค. 2. OOP ์žฅ์  - S/W์˜ ์งˆ์„ ํ–ฅ์ƒํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ•ํ•œ ์‘์ง‘๋ ฅ(Strong Cohesion)๊ณผ ์•ฝํ•œ ๊ฒฐํ•ฉ๋ ฅ(Weak Coupling)์„ ์ง€ํ–ฅํ•ด์•ผ ํ•˜๋Š”๋ฐ, OOP์˜ ๊ฒฝ์šฐ ํด๋ž˜..
์•ž์„œ ํ•„์š”ํ•œ ๋ฐฐ๊ฒฝ๋“ค์— ๋Œ€ํ•ด์„œ ์–ด๋Š์ •๋„ ์‚ดํŽด๋ณด๊ณ  ๋‚˜๋‹ˆ ๊ด€๋ จ๋œ ์ž๋ฃŒ๋“ค์„ ๋ณด๋Š”๋ฐ ํ›จ์”ฌ ์ˆ˜์›”ํ•จ์„ ๋Š๊ผˆ๋‹ค. ์‚ฌ์‹ค asyncio์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ = ๋ฐฐ๊ฒฝ์ง€์‹ ๊ณต๋ถ€ํ•˜๊ธฐ ์ด๊ฒƒ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์•„์ง ๋ถ€์กฑํ•œ ๊ฐœ๋…๋“ค์€ ์ถ”ํ›„ ํ•„์š”ํ•œ ๋ฐฐ๊ฒฝ์ง€์‹ ์‹œ๋ฆฌ์ฆˆ๋กœ ์ž‘์„ฑํ•ด๋ณด๋„๋ก ํ• ๊ฒƒ์ด๋‹ค. 1. Asyncio๋ž€? - ์ผ๋‹จ Async (๋น„๋™๊ธฐ) + input/output (์ž…์ถœ๋ ฅ) ์ด๋ผ๋Š” ๋œป์ด๋‹ค. - ๋น„๋™๊ธฐ๋ผ๋Š” ๊ฒƒ์€ ์ด๋ฏธ์ง€๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. - ๋™๊ธฐ๋Š” ์ž‘์—…1์ด ๋๋‚˜๋Š” ๊ฒƒ์„ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์ž‘์—…2๋ฅผ ํ•˜๋Š” ๋ฐ˜๋ฉด ๋น„๋™๊ธฐ๋Š” ์ž‘์—…1์ด ์ง„ํ–‰๋˜๋Š” ๋™์•ˆ ์ž‘์—…2๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์‹œ์ ์œผ๋กœ๋งŒ ๋ด๋„ ์‹œ๊ฐ„์ด ํ˜„์ €ํžˆ ์ ˆ์•ฝ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. - ๊ทธ๋Ÿผ ์™œ io(์ž…์ถœ๋ ฅ)์ด๋ƒ๋ฉด CPU๊ฐ€ ํ•˜์œ„์˜ ๋ฉ”๋ชจ๋ฆฌ ์žฅ์น˜๋“ค๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์†๋„ ์ฐจ์ด๋กœ ์ธํ•ด CPU์˜ ์ž‘์—…..
1. ์“ฐ๋ ˆ๋“œ (Thread)๋ž€? - ํ”„๋กœ๊ทธ๋žจ(ํ”„๋กœ์„ธ์Šค)์˜ ์‹คํ–‰ ๋‹จ์œ„์ด๋ฉฐ, ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๋กœ ๊ตฌ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. - ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์“ฐ๋ ˆ๋“œ๋“ค์€ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ, ์ž์› ๋“ฑ์„ ๊ณต์œ ํ•œ๋‹ค. - ํ”„๋กœ์„ธ์Šค์™€ ๊ฐ™์ด ์‹คํ–‰, ์ค€๋น„, ๋Œ€๊ธฐ ๋“ฑ์˜ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๋ฉฐ ์‹คํ–‰ ์ƒํƒœ๊ฐ€ ๋ณ€ํ• ๋•Œ๋งˆ๋‹ค ์“ฐ๋ ˆ๋“œ ๋ฌธ๋งฅ๊ตํ™˜(context switching)์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. - ๊ฐ ์“ฐ๋ ˆ๋“œ๋ณ„๋กœ ์ž์‹ ๋งŒ์˜ ์Šคํƒ๊ณผ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๊ฐ€์ง„๋‹ค. 2. ํ”„๋กœ์„ธ์Šค ์™€ ์“ฐ๋ ˆ๋“œ (1) Process - ํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ CPU์˜ ์‹œ์Šคํ…œ ์ž์›์„ ํ• ๋‹น ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. (2) Thread - ์“ฐ๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰ ๋‹จ์œ„๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. - ํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋™์ž‘๋˜๋Š” ์—ฌ๋Ÿฌ ์‹คํ–‰ ํ๋ฆ„..
asyncio๋ฅผ ๊ณต๋ถ€ํ•˜๋ ค๋‹ค๊ฐ€ ์ž˜ ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„์ด ๋งŽ์•„์„œ ๊ทธ๋ƒฅ ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„๋ถ€ํ„ฐ ๊ณต๋ถ€ํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ณ ์ž ํ•œ๋‹ค. 1. ์ฝ”๋ฃจํ‹ด(coroutine) ์ด๋ž€? - cooperative routine์„ ์˜๋ฏธํ•˜๋Š”๋ฐ, ์„œ๋กœ ํ˜‘๋ ฅํ•˜๋Š” ๋ฃจํ‹ด์ด๋ผ๋Š” ๋œป์ด๋‹ค. - ์šฐ์„  ๋ฃจํ‹ด์ด๋ผ๋Š” ๊ฐœ๋…๋ถ€ํ„ฐ ์‚ดํŽด๋ณธ๋‹ค. def add(a, b): c = a + b # add ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๋ฉด ๋ณ€์ˆ˜์™€ ๊ณ„์‚ฐ์‹์€ ์‚ฌ๋ผ์ง print(c) print('add ํ•จ์ˆ˜') def calc(): add(1, 2) # add ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๋ฉด ๋‹ค์‹œ calc ํ•จ์ˆ˜๋กœ ๋Œ์•„์˜ด print('calc ํ•จ์ˆ˜') calc() ์ด ์ฝ”๋“œ์—์„œ calcํ•จ์ˆ˜์—์„œ add๋ฅผ ๋ถˆ๋ €๊ณ , addํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๋ฉด calc๋กœ ๋‹ค์‹œ ๋Œ์•„์˜จ๋‹ค. ์ด๋•Œ, calc๊ฐ€ ๋ฉ”์ธ ๋ฃจํ‹ด์ด๊ณ , add๋Š” ์„œ๋ธŒ๋ฃจํ‹ด์ด ๋˜๋Š” ๊ฑฐ๋‹ค. - ์ด๋Ÿฐ์‹์˜..
์‹ ์ž…์ด๊ธด ํ•˜์ง€๋งŒ 6๊ฐœ์›”์˜ ๊ฒฝ๋ ฅ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค๊ณ  ๊ผด์— ์ž๋งŒํ–ˆ๋‚˜๋ณด๋‹คใ…  logging ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ์•ˆ์ผํ–ˆ๋˜ ๊ฑฐ ๊ฐ™๋‹น ๊ทธ๋™ํ•œ ๋‚˜์—๊ฒŒ log๋Š” ์™ธ๋ถ€์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์œผ๋กœ์„œ ๋””๋ฒ„๊ทธํ•  ๋•Œ ๋ฐ”๋กœ๋ฐ”๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ทธ๋Ÿฐ ๊ทธ ์ด์ƒ๋„ ์ดํ•˜๋„ ์•„๋‹ˆ์—ˆ๋Š”๋ฐ ์›น ๋ฐฑ์—”๋“œ๋ฅผ ํ•˜๋‹ค์™€์„œ ๊ทธ๋ ‡๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด๊ณ ์‹ถ๋‹ค.. ์—ฌํŠผ ํ”„๋กœ๊ทธ๋žจ์—” ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒŒ ์—†๋‹จ ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค. 3๋…„ ํ›„์ธ ์ง€๊ธˆ ์ด ๊ธ€์„ ์ฝ์œผ๋‹ˆ๊นŒ ๋„ˆ๋ฌด ์ฐฝํ”ผํ•˜๋‹ค ํ•˜ํ•˜^^.. ๋กœ๊ทธ๋Š” ๊ต‰์žฅํžˆ ์ค‘์š”ํ•˜๋ฏ€๋กœ ๋ชฐ๋ž๋˜ ๋‚ด ์ž์‹ ์ด ์ž˜๋ชป๋œ ๊ฒƒ์ด๋‹ค ํŒŒ์ด์ฌ์—์„œ ์ฝ˜์†” ์ถœ๋ ฅ๋ฐฉ๋ฒ•์€ print() ์ด๋ ‡๊ฒŒ ์“ฐ๋ฉด๋˜๋Š”๋ฐ, ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์žˆ๋Š” logging ์„ ์“ฐ๋ฉด ๋กœ๊ทธ๋กœ์จ ๊ด€๋ฆฌ๊ฐ€ ๋œ๋‹ค. logging.error("์—๋Ÿฌ๋ฉ”์„ธ์ง€") ์ด๋Ÿฐ์‹์œผ๋กœ ์“ฐ๋ฉด ๋œ๋‹ค. ๋กœ๊น…๋ ˆ๋ฒจ ๋กœ๊น…์—๋Š” print()์™€๋Š” ๋‹ฌ๋ฆฌ ๋กœ๊ทธ์— ๋ ˆ๋ฒจ์ด ์žˆ๋‹ค. D..
ํ‚จ์ง€ (Kinzie)
'๐Ÿ”  Language/Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)