๐Ÿ’ป/ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ํŒŒ์ด์ฌ GIL : multithreading, multiprocessing

ruhz 2024. 6. 19. 22:29

 

์•ˆ๋…•ํ•˜์„ธ์š”. ์ด ๋น„๋””์˜ค์—์„œ๋Š” Python์—์„œ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ๊ณผ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ๋น„๊ตํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์ œ Python์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋‘ ๊ฐ€์ง€ ์ฃผ์žฅ์„ ๋งŽ์ด ๋“ฃ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” Python์ด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๊ณ , ๋‘ ๋ฒˆ์งธ๋Š” Python์ด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋Š ๊ฒƒ์ด ๋งž์„๊นŒ์š”? ์ œ๊ฐ€ ์ƒ๊ฐํ•˜๊ธฐ์—๋Š” ์ •ํ™•ํ•œ ํ‘œํ˜„์€ Python์ด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ ๋™์‹œ์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋‘ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์Šค๋ ˆ๋“œ๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”? ์ด๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ธ์Šคํ„ด์Šค์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Firefox์˜ ์ธ์Šคํ„ด์Šค๋‚˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Microsoft Word ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ์ตœ์†Œ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ด ์Šค๋ ˆ๋“œ๋Š” ์ž์ฒด ๋ ˆ์ง€์Šคํ„ฐ์™€ ์Šคํƒ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋ช…๋ น์–ด ์‹œํ€€์Šค์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์šด์˜์ฒด์ œ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์–ธ์ œ ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ ์Šค๋ ˆ๋“œ๋Š” ์ž์ฒด ๋ ˆ์ง€์Šคํ„ฐ์™€ ์Šคํƒ, ์ฆ‰ ๋ฉ”๋ชจ๋ฆฌ์—์„œ์˜ ๊ณ ์œ  ๊ณต๊ฐ„์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์Šค๋ ˆ๋“œ๊ฐ€ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์— ๋ณด๊ด€๋œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ฌ์ง€์–ด Python ๊ตฌํ˜„์ฒด๊ฐ€ ์ปค๋„ ์Šค๋ ˆ๋“œ ๋Œ€์‹  ์‚ฌ์šฉ์ž ์ˆ˜์ค€์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋”๋ผ๋„, ์Šค๋ ˆ๋“œ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ๋˜ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ณ ์œ ํ•œ ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„์„ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ๋ชจ๋‘ ๊ณ ์œ ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ ์€ ํ”„๋กœ์„ธ์Šค ๊ฐ„์—๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„์€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋ ค๋ฉด ํ๋‚˜ ํŒŒ์ดํ”„๋ฅผ ํ†ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์Šค๋ ˆ๋“œ๋„ ํ์™€ ํŒŒ์ดํ”„๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํŒŒ์ดํ”„์™€ ํ์—๋Š” ๊ณ ๋ คํ•ด์•ผ ํ•  ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ Python์—์„œ์˜ ์Šค๋ ˆ๋“œ์™€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข€ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ด…์‹œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”„๋กœ์„ธ์Šค 0๊ณผ ํ”„๋กœ์„ธ์Šค 1์ด๋ผ๋Š” ๋‘ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์Šค๋ ˆ๋“œ 0๊ณผ ์Šค๋ ˆ๋“œ 1์ด๋ผ๋Š” ๋‘ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. 4์ฝ”์–ด CPU์—์„œ ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ๊ณ ๋ คํ•ด๋ณด๋ฉด, Python์˜ ์Šค๋ ˆ๋“œ๋Š” ๋™์‹œ์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€๋งŒ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐ ์Šค๋ ˆ๋“œ๋Š” ์‹œ๊ฐ„์ ์œผ๋กœ ๋ถ„ํ• ๋˜์–ด ์•ฝ๊ฐ„์”ฉ ์ง„ํ–‰๋˜์ง€๋งŒ, ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค์˜ ๋‘ ์Šค๋ ˆ๋“œ๋Š” ์ ˆ๋Œ€ ๋™์‹œ์— ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ์™€ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฌผ๋ฆฌ์  CPU ์ฝ”์–ด์—์„œ ์ด๋ฆฌ์ €๋ฆฌ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋™์ž‘์€ ์šด์˜์ฒด์ œ์—์„œ ํŠน์ • CPU ์ฝ”์–ด์— ๋Œ€ํ•œ ์นœํ™”์„ฑ์„ ์š”์ฒญํ•˜์—ฌ ์–ต์ œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ๊ฒฐ์ •ํ•  ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์–ด์จŒ๋“ , ์ฃผ์–ด์ง„ ํ”„๋กœ์„ธ์Šค์˜ ๊ฐ ์Šค๋ ˆ๋“œ๋Š” ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ Python์—์„œ ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค์˜ ๋‘ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ž‘๋™ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ํ”„๋กœ์„ธ์Šค๋Š” ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐœ๋ณ„ ํ”„๋กœ์„ธ์Šค์˜ ์Šค๋ ˆ๋“œ 0๊ณผ ์Šค๋ ˆ๋“œ 1์€ ๊ฐ๊ฐ ๊ฐœ๋ณ„ ํ”„๋กœ์„ธ์Šค์— ์†ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋ณดํ˜ธ๋œ ์ „์—ญ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์ž ๊ธˆ์„ ํš๋“ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•˜์—ฌ ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ์ด๋ž€ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค์ง€๋งŒ, ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋™์‹œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ๋‘ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” CPU๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์ž‘์—…์ด ๋ณ‘๋ ฌ๋กœ ์ˆ˜ํ–‰๋  ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ข‹์€ ์ ์€ IO ์ œํ•œ ์Šค๋ ˆ๋“œ๋Š” ๊ฑฐ์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜๊ฐ€๊ธฐ ์œ„ํ•œ ์‹ ํ˜ธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐ ์†Œ๋น„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด์ œ CPU ๋ฐ”์šด๋“œ ์ž‘์—… ๋Œ€์‹  IO ๋ฐ”์šด๋“œ ์ž‘์—…์„ ๊ณ ๋ คํ•ด ๋ด…์‹œ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์Šค๋ ˆ๋“œ 0์ด IO ๋ฐ”์šด๋“œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ 0์€ IO ์ž‘์—…์„ ๊ฐ€์ง€๋ฉฐ, ์ด๋Ÿฌํ•œ IO ์ž‘์—…์€ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, IO ์š”์ฒญ์ด ๋ฐœ์ƒํ•˜๋ฉด ์Šค๋ ˆ๋“œ๋Š” ๋ฐ˜ํ™˜ ๊ฐ’์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŒŒ์ผ์„ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ฑฐ๋‚˜, ์‹œ๋ฆฌ์–ผ ํฌํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ฑฐ๋‚˜, URL์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Python์—์„œ๋Š” IO ์š”์ฒญ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ์ „์—ญ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์ž ๊ธˆ์„ ํ•ด์ œํ•˜์—ฌ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋  ์‹œ๊ฐ„์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ 1์ด ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” CPU ์ œํ•œ ์ž‘์—…์ด๋ผ๋ฉด, ๊ฐ€๋” IO ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ค‘๋‹จ๋˜๋Š” ๊ฒƒ์€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋Œ€์•ˆ์ด ๊ธด ์ฒ˜๋ฆฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. Python ์Šค๋ ˆ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ ์ž‘์—…์ด ์š”์ฒญ๋˜๋Š” ๋™์•ˆ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ Python์—์„œ ์Šค๋ ˆ๋“œ์™€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ธก์ • ์ง€ํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๊ตํ•ด ๋ด…์‹œ๋‹ค. ์„ค์ • ๋น„์šฉ ์ธก๋ฉด์—์„œ ์Šค๋ ˆ๋“œ๋Š” ์‹œ๊ฐ„๊ณผ ์ž์› ๋ฉด์—์„œ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๋น„์šฉ์ด ์ ๊ฒŒ ๋“ญ๋‹ˆ๋‹ค. ์ฒ˜๋ฆฌ ๋ฐฉ์‹์—์„œ๋Š” CPython ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ์Šค๋ ˆ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์—์„œ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„์„ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์™€ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ํ”„๋กœ์„ธ์Šค๋Š” ๋ณ„๋„์˜ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์‹คํ–‰ ์ธก๋ฉด์—์„œ๋Š” ๋‘˜ ๋‹ค ๋™์‹œ์ ์ด์ง€๋งŒ, ์ค‘์š”ํ•œ ์ ์€ Python์—์„œ ์Šค๋ ˆ๋“œ๋Š” ๋ณ‘๋ ฌ์ ์ด์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‘ ์Šค๋ ˆ๋“œ๋Š” ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜ ์—†๊ณ , ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ํƒ€์ž„์Šคํƒฌํ”„ t0์™€ ๋ฐฐ์—ด์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด์€ ์ฒซ ๋ฒˆ์งธ ์—ด์— 50,000 ๋‚˜๋…ธ์ดˆ(์ฆ‰, 50 ๋งˆ์ดํฌ๋กœ์ดˆ) ๊ฐ„๊ฒฉ์œผ๋กœ ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋ฉฐ, ๋‘ ๋ฒˆ์งธ ์—ด์—๋Š” 0์ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜๋Š” ํƒ€์ž„์Šคํƒฌํ”„ ์ดํ›„์˜ ์‹œ๊ฐ„์„ ์„ฑ๋Šฅ ์นด์šดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‰๊ฐ€ํ•˜๋Š” ๋ฌดํ•œ ๋ฃจํ”„์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ์นด์šดํ„ฐ๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ์‹œ๊ฐ„์ด 75,000 ๋‚˜๋…ธ์ดˆ์ธ ๊ฒฝ์šฐ, ๋‘ ๋ฒˆ์งธ ์—ด์˜ ๋‘ ๋ฒˆ์งธ ํ–‰์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ๋ฐฐ์—ด์˜ ์ตœ๋Œ€ ์‹œ๊ฐ„์„ ์ดˆ๊ณผํ•˜๋ฉด ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋ฐฐ์—ด์€ 50 ๋งˆ์ดํฌ๋กœ์ดˆ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ ๋‚ด์—์„œ ๋ฃจํ”„๊ฐ€ ์‹คํ–‰๋œ ํšŸ์ˆ˜๋กœ ์ฑ„์›Œ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ํ•ญ์ƒ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์ง‘์ค‘์ ์ธ ํ•จ์ˆ˜์ด๋ฉฐ, ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹ค์ œ๋กœ ๋‹จ์ผ ์ฝ”์–ด ์ œํ•œ์ž…๋‹ˆ๋‹ค.

์ด์ œ threading ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์™€ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด ๋ฐฐ์—ด์˜ ๊นŠ์€ ๋ณต์‚ฌ๋ณธ์„ ๊ฐ ์Šค๋ ˆ๋“œ์— ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฐฐ์—ด์˜ ๊นŠ์€ ๋ณต์‚ฌ๋ณธ์ด ์ด ํ•จ์ˆ˜ f์˜ ๋ฐ์ดํ„ฐ๋กœ ์ฑ„์›Œ์ง€๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ค ๋ชจ์Šต์ผ๊นŒ์š”? ์—ฌ๊ธฐ 4๊ฐœ์˜ ์Šค๋ ˆ๋“œ ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์ €๋Š” 16๊ฐœ์˜ ์ปค๋„ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” 8์ฝ”์–ด CPU๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 4๊ฐœ๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์™ผ์ชฝ์˜ ๊ฐ€๋กœ ๋ง‰๋Œ€๋Š” ํŠน์ • ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์— ๋Œ€ํ•ด ํžˆ์Šคํ† ๊ทธ๋žจ์ด ์ฑ„์›Œ์กŒ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ƒ‰์ƒ์ด ์žˆ๋Š” ๊ณณ์€ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์–ธ์ œ๋“ ์ง€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ์‹คํ–‰๋˜๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๋Š” ๋ชจ๋‘ 15๋ฐ€๋ฆฌ์ดˆ์˜ ๊ฐœ๋ณ„ ์ฒญํฌ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์šฐ์—ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค. CPython์€ ์Šค๋ ˆ๋“œ๊ฐ€ ์ฐจ๋‹จ IO ํ˜ธ์ถœ์— ๋„๋‹ฌํ•˜๊ฑฐ๋‚˜ 15๋ฐ€๋ฆฌ์ดˆ๊ฐ€ ๊ฒฝ๊ณผํ•  ๋•Œ๊นŒ์ง€ ์‹คํ–‰์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ๋“œ๋ฌผ๊ฒŒ ์Šค๋ ˆ๋“œ๋Š” 15๋ฐ€๋ฆฌ์ดˆ ์ดํ›„์— ๋‹ค์‹œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์•ฝ๊ฐ„์˜ ์ผ์‹œ ์ค‘์ง€๋ฅผ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค. ์ด 3์ดˆ ๋™์•ˆ ์ƒ์„ฑ๋œ ํ™œ๋™ ํ”Œ๋กฏ์—์„œ ์ด๋Š” 200๊ฐœ์˜ ์Šค๋ ˆ๋“œ ํ• ๋‹น ์ฒญํฌ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋œ ์‹œ๊ฐ„์€ ์˜ค๋ฅธ์ชฝ์— ํ”Œ๋กœํŒ…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•จ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์Šค๋ ˆ๋“œ์˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ณ ๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ „์ฒด์ ์œผ๋กœ 3์ดˆ ๋™์•ˆ ๋ชจ๋“  ์Šค๋ ˆ๋“œ์—์„œ ์•ฝ 3์ดˆ์˜ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์—ˆ๊ณ , ๋ชจ๋“  ์Šค๋ ˆ๋“œ์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ˆ˜๋Š” ์•ฝ 200๋งŒ ๋ฒˆ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

8๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ƒํ™ฉ์€ ๋งค์šฐ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์ด 3์ดˆ ๋™์•ˆ ์Šค๋ ˆ๋“œ๊ฐ€ ํ• ๋‹น๋œ ์‹œ๊ฐ„์— ํ›จ์”ฌ ๋” ๋งŽ์€ ๋น„๋Œ€์นญ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ฒญํฌ์—์„œ ์•ฝ๊ฐ„์˜ ์ค‘๋‹จ์ด ๋ณด์ด๋ฉฐ, ์ด๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ๊ฐœ์ž…ํ•˜์—ฌ ์Šค๋ ˆ๋“œ๋ฅผ ์ž ์‹œ ์ค‘๋‹จ์‹œํ‚ค๊ณ  ๋‹ค๋ฅธ ๋ฌผ๋ฆฌ์  ๋˜๋Š” ๊ฐ€์ƒ ํ”„๋กœ์„ธ์„œ๋กœ ์ด๋™์‹œํ‚ค๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํ•จ์ˆ˜ ๋ฐ˜๋ณต์ด ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ์ตœ์†Œ 50 ๋งˆ์ดํฌ๋กœ์ดˆ์˜ ์ฐฝ์„ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค. 8๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ํ• ๋‹นํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ˆ˜ํ–‰๋œ ์‹ค์ œ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ˆ˜๋Š” ์•ฝ 200๋งŒ ๋ฒˆ์œผ๋กœ, ์Šค๋ ˆ๋“œ ์ˆ˜๋ฅผ ๋‘ ๋ฐฐ๋กœ ๋Š˜๋ ธ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์‹ค์ œ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ˆ˜๋Š” ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

16๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฒซ ๋ฒˆ์งธ 3์ดˆ ํ…Œ์ŠคํŠธ์—์„œ ๋งค์šฐ ํฐ ๋น„๋Œ€์นญ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ „์ฒด์ ์œผ๋กœ 3์ดˆ ๋™์•ˆ 16๊ฐœ์˜ ์Šค๋ ˆ๋“œ์—์„œ ์•ฝ 3์ดˆ์˜ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๋ฉฐ, ๋ชจ๋“  ์Šค๋ ˆ๋“œ์—์„œ ํฐ ๋น„๋Œ€์นญ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚ฎ์€ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง„ ์Šค๋ ˆ๋“œ๊ฐ€ ๋” ๋งŽ์€ ์ดˆ๊ธฐ ์‹œ๊ฐ„์„ ํ• ๋‹น๋ฐ›๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค, ์ง€๊ธˆ ๋ณด์‹œ๋‹ค์‹œํ”ผ, ์Šค๋ ˆ๋“œ 12, 13, 14, 15 ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•  ์‹œ๊ฐ„์ด ํ• ๋‹น๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ 16๊ฐœ์˜ ์Šค๋ ˆ๋“œ์˜ ์ด ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ˆ˜๋Š” ์•ฝ 200๋งŒ ๋ฒˆ์œผ๋กœ, 8๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์™€ ๋น„๊ตํ•ด๋„ ๊ฐœ์„ ๋œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด, ์ด๋Ÿฌํ•œ CPU ์ œํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์–ด๋–ป๊ฒŒ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์„๊นŒ์š”? ๋ฉ€ํ‹ฐ์ฝ”์–ด ์‹œ์Šคํ…œ์„ ํ™œ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์„ ์‹ค์ œ๋กœ ๋†’์ด๋ ค๋ฉด ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์€ ์‚ฌ๋žŒ๋“ค์ด ์‹ค์ œ๋กœ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ์ด๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋กœ, ํŠนํžˆ ์œˆ๋„์šฐ์—์„œ ์‚ฌ์šฉํ•  ๋•Œ offset ์‹œ๊ฐ„์„ time.time์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ์นด์šดํ„ฐ๋Š” ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘ ์‹œ๊ฐ„์— ์ƒ๋Œ€์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค๋ฅธ ์‹œ๊ฐ„์— ์ƒ์„ฑํ•˜๋ฉด offset์œผ๋กœ perf counter๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. time.clock๋„ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํŒŒ์ด์ฌ 3.8์—์„œ ์ œ๊ฑฐ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. time.process_time๋„ ํ”„๋กœ์„ธ์Šค์— ํŠน์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ๋„, ์ตœ์†Œํ•œ ์ œ ์ปดํ“จํ„ฐ์—์„œ๋Š” time.time ํ•จ์ˆ˜๊ฐ€ ์•ฝ 1๋ฐ€๋ฆฌ์ดˆ์˜ ํ•ด์ƒ๋„๋ฅผ ๊ฐ€์ง€๋ฉฐ ํ”„๋กœ์„ธ์Šค์— ํŠน์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 1๋ฐ€๋ฆฌ์ดˆ๋Š” ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ offset์ด๋ฏ€๋กœ, ์šฐ๋ฆฌ๋Š” ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•ด time.time์„ ์‚ฌ์šฉํ•˜๊ณ  ๋†’์€ ์„ฑ๋Šฅ์˜ binning์„ ์œ„ํ•ด time.perf_counter๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ”„๋กœ์„ธ์Šค๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด๋ฒˆ์—๋Š” ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ณ„๋„์˜ ๋ฐฐ์—ด ๋ณต์‚ฌ๋ณธ์„ ํ”„๋กœ์„ธ์Šค์— ๋ณด๋‚ด์•ผ ํ•˜๋ฉฐ, ํ”„๋กœ์„ธ์Šค๋Š” ์ด๋ฅผ ๋‹ค์‹œ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์ด ๋ฐฐ์—ด์˜ ๊นŠ์€ ๋ณต์‚ฌ๋ณธ์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ƒ์„ฑํ•˜๊ณ , multiprocessing.Pool ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›Œ์ปค ํ’€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ํ’€์€ ์ž๋™์œผ๋กœ ๋ฐฐ์—ด์„ starmap ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์†กํ•˜๊ณ , ๋ฐ˜ํ™˜๋œ ๋ฐฐ์—ด๋„ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ํ”„๋กœ์„ธ์Šค์— ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž„์Šคํƒฌํ”„(t0)๋ฅผ ๋ณด๋‚ด ๋™๊ธฐํ™”๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค ๊ฐ„์—๋Š” ํ†ต์‹ ์„ ํฌํ•จํ•œ ๋งŽ์€ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ ์ฑ„๋„์— ์ด์™€ ๊ด€๋ จ๋œ ๋‹ค๋ฅธ ๋น„๋””์˜ค๋„ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜์„ธ์š”. ์ด๋ฒˆ ๋น„๋””์˜ค์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰ ์„ฑ๋Šฅ๋งŒ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด์ œ 4๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™œ๋™ ํ”Œ๋กฏ์„ ๋‹ค์‹œ ์‚ดํŽด๋ณด๋ฉด, ๋งค์šฐ ๋‹ค๋ฅธ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ช…ํ™•ํžˆ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” ๊ฑฐ์˜ ๋™์‹œ์— ์‹œ์ž‘๋˜๋ฉฐ, ์ž‘์€ ๋ฐฐ์—ด์„ ๊ฐ ํ”„๋กœ์„ธ์Šค์— ๋ณด๋‚ด๊ณ  ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ๋ณด๋‹ค ์•ฝ 4๋ฐฐ ๋” ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ, ์ด 3์ดˆ ๋™์•ˆ ์šฐ๋ฆฌ๋Š” 900๋งŒ ๋ฒˆ์˜ ํ•จ์ˆ˜ ๋ฐ˜๋ณต์„ ์ˆ˜ํ–‰ํ•˜์—ฌ, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์—์„œ ์ œ๊ณต๋œ ์•ฝ 200๋งŒ ๋ฒˆ๋ณด๋‹ค 4๋ฐฐ ์ด์ƒ ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค๋ฅธ ์ฝ”์–ด๋กœ ์ „ํ™˜ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ํ•  ๋•Œ ๊ฐ€๋” ๋Š๊น€์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „๋ฐ˜์ ์œผ๋กœ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋น„ํ•ด ์—„์ฒญ๋‚œ ํ–ฅ์ƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

8๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ํ˜„์ƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์‹œ์ž‘ ์‹œ๊ฐ„์ด ์„œ๋กœ ๋‹ค๋ฅด๋ฉฐ ํƒ€์ž„์Šคํƒฌํ”„ ์ •ํ™•๋„๋ฅผ ์ดˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์—ฌ์ „ํžˆ ๋‹จ์ผ ํ”„๋กœ์„ธ์Šค(๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค)์™€ ๋ช‡ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ ์›Œ์ปค ํ”„๋กœ์„ธ์Šค๋กœ ํŒจํ‚นํ•˜๊ณ  ์ „์†กํ•˜๋Š” ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์Šค๋ ˆ๋“œ๋Š” ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์€ ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” CPU ์ œํ•œ ์ž‘์—…์— ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ œ CPU๋Š” 8๊ฐœ์˜ ์ฝ”์–ด์™€ ๋™์‹œ์— ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ์ง€์›ํ•˜์—ฌ ๊ฑฐ์˜ ๋ชจ๋“  ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์œˆ๋„์šฐ๋„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ถฉ๋ถ„ํ•œ ์ฒ˜๋ฆฌ ์ฝ”์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŽ์€ ๋ฉ€ํ‹ฐ์ฝ”์–ด CPU ์ „์›์„ ์š”๊ตฌํ•˜์—ฌ ํŒŒ์ด์ฌ ํ”„๋กœ์„ธ์Šค์™€ CPU ์‹œ๊ฐ„์„ ๊ฒฝ์Ÿํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ๋ณด๋‹ค 8๋ฐฐ ๋” ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์ด 1,670๋งŒ ๋ฒˆ์˜ ํ•จ์ˆ˜ ๋ฐ˜๋ณต์ด ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋Š” 4๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ์•ฝ 85% ๋” ๋งŽ์€ ์ž‘์—…์ด๋ฉฐ, 8๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋ณด๋‹ค 8๋ฐฐ ๋” ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ 16๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•œ ์˜ˆ๋ฅผ ๋ณด๋ฉด ๋งค์šฐ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค. ์ œ CPU๋Š” 8๊ฐœ์˜ ๋ฌผ๋ฆฌ์  ์ฝ”์–ด์™€ ๋™์‹œ์— ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ํ™œ์„ฑํ™”ํ•˜์—ฌ 16๊ฐœ์˜ ๋™์‹œ ์ปดํ“จํŒ… ์œ ๋‹›์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค์˜ ์‹œ์ž‘ ์‹œ๊ฐ„์ด ๋ชจ๋‘ ๋ถ„์‚ฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ„์‚ฐ์€ ์•ฝ 180๋ฐ€๋ฆฌ์ดˆ๋กœ, ์ด์ „ 8๊ฐœ์˜ ์Šค๋ ˆ๋“œ์˜ 10๋ฐ€๋ฆฌ์ดˆ๋ณด๋‹ค ํ›จ์”ฌ ํฝ๋‹ˆ๋‹ค. ์ด 3์ดˆ ๋™์•ˆ ์ผ๋ถ€ ํ”„๋กœ์„ธ์Šค๋Š” ๋น„๊ต์  ์ค‘๋‹จ ์—†์ด ์‹คํ–‰๋˜์ง€๋งŒ, ํ”„๋กœ์„ธ์Šค 9, 10, 13, 14๋Š” ๊ณ„์† ์ค‘๋‹จ๋˜์–ด ์ „์ฒด ์ง„ํ–‰์ด ๋‚ฎ์•„์ง‘๋‹ˆ๋‹ค. ์ด๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋ฉฐ, ๊ฐ€๋” ๋” ์ค‘์š”ํ•œ ์ž‘์—…์ด ๋ฐœ์ƒํ•˜์—ฌ ์šด์˜์ฒด์ œ๊ฐ€ ์ผ๋ถ€ ์Šค๋ ˆ๋“œ๋ฅผ ์ค‘๋‹จ์‹œํ‚ค๊ณ  ๋‹ค๋ฅธ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ๋ณด๋‹ค 14๋ฐฐ ๋” ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ด 2,060๋งŒ ๋ฒˆ์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋Š” 8๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค 23% ๋” ๋งŽ์€ ์ž‘์—…์ด์ง€๋งŒ, ํ”„๋กœ์„ธ์Šค ์ˆ˜๋ฅผ ๋‘ ๋ฐฐ๋กœ ๋Š˜๋ ธ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์‹ค์ œ ์„ฑ๋Šฅ ์ฆ๊ฐ€๊ฐ€ ๊ฑฐ์˜ ์—†๋Š” ๊ฒƒ์€ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์‹ค์ œ๋กœ SMT ๊ธฐ์ˆ  ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 8๊ฐœ์˜ ๋ฌผ๋ฆฌ์  ์ฝ”์–ด์™€ 16๊ฐœ์˜ ๋™์‹œ ์ฝ”์–ด๊ฐ€ ์žˆ์ง€๋งŒ, ์‹ค์ œ ์„ฑ๋Šฅ ์ฆ๊ฐ€๋Š” ์•ฝ 25%์ž…๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ๊ณผ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์˜ ํ™œ๋™ ํ”Œ๋กฏ์„ ๋น„๊ตํ•˜๋ฉด, ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์ด ๋™์ผํ•œ ์‹œ๊ฐ„ ๋™์•ˆ ๋” ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ๊ณผ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์—์„œ ์‹ค์ œ ์ž‘์—…์„ ๋น„๊ตํ•ด ๋ณด๋ฉด, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์€ ์Šค๋ ˆ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด๋„ ์ž‘์—…๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ, ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์€ 8๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊นŒ์ง€ ๋›ฐ์–ด๋‚œ ํ™•์žฅ์„ฑ์„ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฌผ๋ฆฌ์  CPU ์ฝ”์–ด ์ˆ˜์™€ ์ผ์น˜ํ•˜๋ฉฐ, ๋™์‹œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜์—ฌ ์ถ”๊ฐ€๋กœ 25% ๋” ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ๊ฐ€ ์—ฌ์ „ํžˆ ์ผ๋ถ€ CPU ์‹œ๊ฐ„์„ ํ•„์š”๋กœ ํ•œ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด, ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋Š” ๋งค์šฐ ์ธ์ƒ์ ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์šด ์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”? CPU ์ œํ•œ ์ž‘์—…์˜ ๊ฒฝ์šฐ, ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์ด ๊ฐ€์žฅ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, IO ์ œํ•œ ์ž‘์—…(์‹œ๋ฆฌ์–ผ ๋ฐ์ดํ„ฐ ๋Œ€๊ธฐ, URL ํ•ด์„ ๋Œ€๊ธฐ ๋“ฑ)์—๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์ด ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์€ GUI ๋˜๋Š” ๋Œ€ํ™”ํ˜• ๊ธฐ๋Šฅ์— ํƒ์›”ํ•˜๋ฉฐ, ๋งค์šฐ ์ž‘์€ CPU ์‹œ๊ฐ„์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์ด๋‚˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ์ž˜๋ชป ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ๋” ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. numpy์™€ scipy์™€ ๊ฐ™์€ ๋ชจ๋“ˆ์˜ ๋ฐฑ์—”๋“œ๋Š” ์ตœ์ ํ™”๋˜์–ด ์žˆ์–ด ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์—์„œ ์ด๋“์„ ์–ป์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ ๊ฒฝ์šฐ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.