inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

넓고 얕게 외워서 컴공 전공자 되기

자료를 정리하는 이유

동시성 부분 추가 공부하면서 헷갈리는 부분 질문 드립니다.

해결된 질문

426

권설민

작성한 질문수 3

0

안녕하세요 선생님!

동시성과 병렬성 관련해 기초가 약해 해당 강의를

들으면서 OS 부족한 부분을 많이 알게되어 도움이 많이되고 있습니다.

 

다름이 아니라 해당 강좌 범위는 벗어나지만..

구글링해도 명확하게 해결되지 않아 질문 드립니다.

 

동시성을 구현하는 방법으로

멀티쓰레드코루틴 방법으로 구현을 할 수있고

멀티쓰레드 방법에서 쓰레드 전환 간 context switch가 많기 때문에 오버헤드도 많아 Coroutine 방법을 많이 쓰고 또한 유저가 이벤트루프(스케쥴링)을 app에서 관리한다는 측면에서 디버그가 유용하다 정도로 이해하고 있습니다.

 

많은 블로그에서

멀티쓰레드보다 코루틴을 소개하면서 동시성 구현시 코루틴을 더 상위(혹은 좋은) 방법으로 서술이 많이 되어 있더라구요.

I/O작업이 빈번할 경우 코루틴이 더 유리하다는 이해가 됩니다.

 

2개의 구현방법이 레이어가 다르다(thread와 task)보니 4가지 경우의 수를 적용할 수 있는데 실제 동시성을 적용해야되는 상황이면 어떻게 판단하고 최적의 구현방법(4가지 중 선택)을 적용할 수 있을까요?

(파이썬 스택을 쓰고 있으며 GIL도 이해하고 있는 상태입니다.)

 

다시한번 해당 강의와 조금 벗어난 질문드려 죄송합니다.
( _ _ )

 

 

python 동시성 병렬성

답변 1

0

널널한 개발자

'I/O 작업이 빈번할 경우 코루틴이 더 유리' 하다는 말의 큰 전제는 느린 I/O 입니다. 디스크 입/출력이나 네트워크 입/출력이 대표적이라 하겠습니다. 그리고 질문 중 이해가 되지 않는 부분은 '2개의 구현 방법이 레이어가 다르다'라는 말입니다. 제가 C/C++ 분야에 특화되어 더 그런 것 같습니다.

코루틴이 좋은 성능을 내는 이유는 Thread가 Wait할 일 없이 촘촘하게 연속적으로 연산할 수 있도록 하고 있기 때문입니다. 스레드 스위칭 오버헤드도 개선되고요. 아래 글을 참고하시기 바랍니다.

https://todaycode.tistory.com/179

 

그렇다면 사실 결론은 좀 나온 것과 같습니다. 당연히 멀티스레드 환경이어야 하며 그 과정에서 동기화는 필수 입니다. 따라서 '실제 동시성을 적용'한다는 말 자체는 의미가 없다고 하겠습니다. 참고하시기 바랍니다.:)

가상환경 설정시 문의

0

5

1

개발환경에 대해셔 설명부탁드립니다.

0

10

1

파트9 강의는 언제 오픈하시나요

0

14

2

20년 4,5회 13번

0

9

1

작업형 2 기출7회분에서

0

14

1

11. 데이터를 목록화하는 리스트와 튜플 에서 콘솔 실행시

0

18

1

ZIP 파일

0

21

2

26강 13F 강의 불일치 및 질문 요청

0

25

3

[업로드오류] 강의 내용과 제목 불일치

0

20

2

강의와는 별개로...

0

27

3

[예제002] 에서 파인썬 인터프리터가 없습니다

0

30

3

65강 소리

0

15

1

작업형2 모의문제1 (30강)

0

22

2

섹션 5 CSS selector사용해서 클로링하기2의 커리큘럼 일정 부재?

0

15

2

가상환경 초반 에러_create name

0

25

1

안녕하세요 유튜브 보고 재밌을꺼 같아서 강의 결제해서 보고잇습니다.

0

22

2

수강 기간 연장 문의 드립니다.

0

27

2

수강 계획과 관련해 문의 드립니다.

0

24

2

노션 열기에 도움이 필요합니다.

0

27

2

노션 파일 권한

0

25

2

좋은 강의 자료 감사합니다.

0

28

2

유튜브 영상보고 강의 등록하였습니다.

0

28

2

강의 내용 실습관

0

32

1

노션 파일 없음

0

26

3