Celery: 맡과 μŠ€νƒ€λ§΅μ˜ 이름을 λ°”κΏ”μ•Ό ν•©λ‹ˆκΉŒ?

에 λ§Œλ“  2014λ…„ 02μ›” 24일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: celery/celery

μ €λŠ” 이 2가지 κΈ°λ³Έ μš”μ†Œκ°€ "λΆ„μ‚° μž‘μ—… λŒ€κΈ°μ—΄"의 λ§₯λ½μ—μ„œ μ˜λ―Έν•˜λŠ” 바에 λΆ€ν•©ν•œλ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 단일 μž‘μ—…μ„ μƒμ„±ν•˜κΈ° λ•Œλ¬Έμ— λˆ„κ΅°κ°€κ°€ map 및 starmap κΈ°λŠ₯을 μ›ν•˜λŠ” 이유λ₯Ό μ΄ν•΄ν•˜μ§€λ§Œ μ‚¬μš©μžκ°€ λ‹¨μˆœνžˆ μž…λ ₯ λͺ©λ‘μ„ μ§€μ›ν•˜λŠ” κΈ°λŠ₯을 μž‘μ„±ν•˜λŠ” 것이 쉽지 μ•ŠκΈ° λ•Œλ¬Έμ— 이점을 μ‹€μ œλ‘œ 얻지 λͺ»ν•©λ‹ˆλ‹€. . λ‚˜μ—κ²Œ "지도"λΌλŠ” μš©μ–΄λŠ” 이것이 ν™•μ‹€νžˆ μ•„λ‹Œ 지도 μΆ•μ†Œ μ•Œκ³ λ¦¬μ¦˜κ³Ό 같은 것을 μ˜λ―Έν•©λ‹ˆλ‹€. ν™”μŒμ€ 사싀상 이름을 ν˜Όλž€μŠ€λŸ½κ²Œ λ§Œλ“œλŠ” 맡 μΆ•μ†Œμ˜ ν•œ ν˜•νƒœμž…λ‹ˆλ‹€.

λ‚˜λŠ” μ½”λ“œμ˜ 이름이 κ·Έ μ΄ν›„λ‘œ μΆ©λΆ„ν•˜κΈ° λ•Œλ¬Έμ— κ³ μˆ˜ν•΄μ•Όν•œλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ mapκ³Ό starmap을 κ°–λŠ” 것은 map-reduce κΈ°λŠ₯ IMOκ°€ μžˆμŒμ„ μ•”μ‹œν•©λ‹ˆλ‹€.

http://docs.python.org/2/library/multiprocessing.html#using -a-pool-of-workers

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

group λŠ” λΆ„μ‚° 맡 κΈ°λŠ₯μž…λ‹ˆλ‹€.

μ§€λ„λΌλŠ” μš©μ–΄λŠ” Google이 MapReduce 논문을 μž‘μ„±ν•˜κΈ° 훨씬 이전에 μ‚¬μš©λ˜μ—ˆμœΌλ©° ν•˜μŠ€μΌˆμ΄λ‚˜ ν΄λ‘œμ €μ—μ„œ μ‚¬μš©ν•  λ•Œ 이 μš©μ–΄λ‘œ ν˜Όλ™λ˜λŠ” μ‚¬λžŒμ€ 없을 κ²ƒμž…λ‹ˆλ‹€. κ·Έ κΈ°λŠ₯은 '지도'λΌλŠ” μš©μ–΄λ‘œ μ™„λ²½ν•˜κ²Œ ν‘œν˜„λ˜μ–΄ 있으며, μžμ—°μŠ€λŸ¬μš΄ λŒ€μ•ˆμ΄ μ—†λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

μΊ”λ²„μŠ€ ν”„λ¦¬λ―Έν‹°λΈŒλ„ λͺ¨λ‘ λͺ…사(signature, group, chord, chain)μ΄μ§€λ§Œ map은 관광객이 가끔 λ³Ό 수 μžˆλŠ” 것이 μ•„λ‹ˆλΌ 동사(task.map)둜 μ‚¬μš©λ©λ‹ˆλ‹€.

MapReduce ν”„λ ˆμž„μ›Œν¬μ—λŠ” 일반적으둜 연결이 끊긴 맡 및 μΆ•μ†Œ 단계가 μ—†μŠ΅λ‹ˆλ‹€. λŒ€μ‹ 
처리된 데이터가 λ¦¬λ“€μ„œλ‘œ μŠ€νŠΈλ¦¬λ°λ˜λŠ” 맀퍼와 λ¦¬λ“€μ„œλ₯Ό μ‚¬μš©ν•˜λŠ” λ§΅λ¦¬λ“€μŠ€ μž‘μ—…μ΄ μžˆμŠ΅λ‹ˆλ‹€. 사싀, λ‹¨μˆœνžˆ map()κ³Ό reduce()κ°€ μžˆλŠ” κ²ƒλ§ŒμœΌλ‘œλŠ” MapReduce에 μΆ©λΆ„ν•˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ κ°„μ£Όλ©λ‹ˆλ‹€.

λ”°λΌμ„œ chord λŠ” μ‹€μ œλ‘œ map-reduce의 ν•œ ν˜•νƒœκ°€ μ•„λ‹ˆλ©° μž₯벽의 λΆ„μ‚° 버전이며 이름은
CΟ‰μ˜ μ΄λŸ¬ν•œ μž₯λ²½μ—μ„œ 직접 κ°€μ Έμ˜΅λ‹ˆλ‹€.

group λŠ” μ•„λ¬΄λ°μ„œλ‚˜ κ°€μ Έμ˜€μ§€ μ•Šκ³  λ™μž‘μ€ λ™μΌν•©λ‹ˆλ‹€.
λ™μ‹œμ„± λ¬Έν—Œμ—μ„œ μ’…μ’… '병렬 맡'이라고 λΆˆλ¦¬λŠ” 것과 같이 λΆ„μ‚°λœ ν˜•νƒœμž…λ‹ˆλ‹€.
λ”°λΌμ„œ map λŠ” 일반적으둜 병렬이 μ•„λ‹Œ 순차적으둜 κ°„μ£Όλ©λ‹ˆλ‹€.

λͺ¨λ“  3 λŒ“κΈ€

group λŠ” λΆ„μ‚° 맡 κΈ°λŠ₯μž…λ‹ˆλ‹€.

μ§€λ„λΌλŠ” μš©μ–΄λŠ” Google이 MapReduce 논문을 μž‘μ„±ν•˜κΈ° 훨씬 이전에 μ‚¬μš©λ˜μ—ˆμœΌλ©° ν•˜μŠ€μΌˆμ΄λ‚˜ ν΄λ‘œμ €μ—μ„œ μ‚¬μš©ν•  λ•Œ 이 μš©μ–΄λ‘œ ν˜Όλ™λ˜λŠ” μ‚¬λžŒμ€ 없을 κ²ƒμž…λ‹ˆλ‹€. κ·Έ κΈ°λŠ₯은 '지도'λΌλŠ” μš©μ–΄λ‘œ μ™„λ²½ν•˜κ²Œ ν‘œν˜„λ˜μ–΄ 있으며, μžμ—°μŠ€λŸ¬μš΄ λŒ€μ•ˆμ΄ μ—†λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

μΊ”λ²„μŠ€ ν”„λ¦¬λ―Έν‹°λΈŒλ„ λͺ¨λ‘ λͺ…사(signature, group, chord, chain)μ΄μ§€λ§Œ map은 관광객이 가끔 λ³Ό 수 μžˆλŠ” 것이 μ•„λ‹ˆλΌ 동사(task.map)둜 μ‚¬μš©λ©λ‹ˆλ‹€.

MapReduce ν”„λ ˆμž„μ›Œν¬μ—λŠ” 일반적으둜 연결이 끊긴 맡 및 μΆ•μ†Œ 단계가 μ—†μŠ΅λ‹ˆλ‹€. λŒ€μ‹ 
처리된 데이터가 λ¦¬λ“€μ„œλ‘œ μŠ€νŠΈλ¦¬λ°λ˜λŠ” 맀퍼와 λ¦¬λ“€μ„œλ₯Ό μ‚¬μš©ν•˜λŠ” λ§΅λ¦¬λ“€μŠ€ μž‘μ—…μ΄ μžˆμŠ΅λ‹ˆλ‹€. 사싀, λ‹¨μˆœνžˆ map()κ³Ό reduce()κ°€ μžˆλŠ” κ²ƒλ§ŒμœΌλ‘œλŠ” MapReduce에 μΆ©λΆ„ν•˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ κ°„μ£Όλ©λ‹ˆλ‹€.

λ”°λΌμ„œ chord λŠ” μ‹€μ œλ‘œ map-reduce의 ν•œ ν˜•νƒœκ°€ μ•„λ‹ˆλ©° μž₯벽의 λΆ„μ‚° 버전이며 이름은
CΟ‰μ˜ μ΄λŸ¬ν•œ μž₯λ²½μ—μ„œ 직접 κ°€μ Έμ˜΅λ‹ˆλ‹€.

group λŠ” μ•„λ¬΄λ°μ„œλ‚˜ κ°€μ Έμ˜€μ§€ μ•Šκ³  λ™μž‘μ€ λ™μΌν•©λ‹ˆλ‹€.
λ™μ‹œμ„± λ¬Έν—Œμ—μ„œ μ’…μ’… '병렬 맡'이라고 λΆˆλ¦¬λŠ” 것과 같이 λΆ„μ‚°λœ ν˜•νƒœμž…λ‹ˆλ‹€.
λ”°λΌμ„œ map λŠ” 일반적으둜 병렬이 μ•„λ‹Œ 순차적으둜 κ°„μ£Όλ©λ‹ˆλ‹€.

group(task.s(i) for i in list) task.map(list) λ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘μ—…μ˜ 세뢄성을 쀄일 수 있기 λ•Œλ¬Έμ— μœ μš©ν•©λ‹ˆλ‹€.

task.map(list) λŠ” μž‘μ—…μ΄ λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” 것을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 점을 μ œμ™Έν•˜κ³ . λͺ¨λ“  μž‘μ—…μ€ λ™μΌν•œ μž‘μ—…μžμ—μ„œ μ°¨λ‘€λ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€. 이것이 사싀이 μ•„λ‹ˆμ–΄μ•Όν•œλ‹€λ©΄ λ‚˜λŠ” μƒˆλ‘œμš΄ 문제λ₯Ό μ—΄ β€‹β€‹μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰