묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
try~finally 구문을 사용하시는 이유가 궁금합니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요! 아주 사소한 질문인데요, LettuceLockStockFacde 서비스의decrease() 메소드 안에서 , Lock을 획득하신 이후에 재고감소 및 락 반환 로직을 try~finally 구문으로 감싸신 이유가 궁금합니다!제 생각에는 try~finally 구문으로 감싸지 않아도,순차적으로 수행될 것 같아서, 특별히 감싸신 이유가 있을까 싶어서 질문 드립니다! 항상 좋은강의 감사드리고, 앞으로 계획하시는 추후 강의도 기대하고 있겠습니다!
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
격리수준과 동시성에 대해서 질문 있습니다!
안녕하세요! 강의 너무 잘들었습니다.강의를 들으면서 느꼈던 궁금증들이 있습니다.동시성 문제에서 락을 하는 이유는 트랜잭션의 격리 수준으로는 해결할 수 없기때문에 하는건가요? 아니면 격리수준을 높이면 성능이 안나와서 락킹을 하는 건지 궁금합니다.Redis가 인메모리라 빠른건 많이 들었는데 실제 개발 환경이면 Redis나 MySQL이나 클라우드 환경을 사용할텐데, 이게 클라우드 서버에서 인메모리를 사용한다는 건가요? Redis나 MySQL이나 네트워크 I/O가 발생하는 것은 같은데 차이가 많이 큰지가 궁금합니다!너무 궁금한 내용이라 답변해주시면 감사하겠습니다!
-
미해결운영체제 공룡책 강의
데드락 질문
28:10데드락은 상호배제 상태에서 일어나는데,오히려 lock과 unlock을 없애서 상호배제가 안되는 상황이된거 같습니다.혹시, 제가 잘못이해했다면 말씀해주세요!
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
closure 3 에서 weak로 준 부분이 궁금합니다.
안녕하세요.레퍼런스 변수의 경우 레퍼런스 카운터에 의해 메모리에서 해제 되는 시점을 확인 한다고 이해 했는데요.캡쳐 리스트에서 weak self 를 사용 할 경우 레퍼런스 카운터가 증가하지 않게 되고그래서 클로저 변수를 메모리에서 해제 하지 않아도 결국 클래스의 deinit이 호출되는것을 확인 하였습니다.그렇다면 weak를 사용해 캡쳐 된 레퍼런스 변수들은 메모리에 그대로 남아 있는건가요?아니면 클래스인스턴스에서 레퍼런스 카운터가 0이 될 때 메모리에서 weak로 참조된 변수들도 같이 해제 되는건지 궁금합니다.
-
미해결운영체제 공룡책 강의
semaphore 로우레벨 코드 질문
여기서 value가 임계구간에 들어갈 수 있는 키의 갯수라 생각합니다. wait에서 키가 없으면, P를 sleep 시킨다 돼 있어서요.(근데, 키 갯수라 생각하면 sleep 할지도 모르는데, 키 를 하나 빼고 wait 검사하는 것도 이상합니다. 'S->value--' 코드가 왜 들어간건지를 모르겠어요. 그냥 조건문 'S->value <= 0' 만 있어야 하는데..)그러면, signal은 프로세스 하나가 키를 반납한 상황인데, 조건문이 키 갯수가 양수여야( 'S->value > 0') wait 큐에서 P 하나를 ready 큐로 데리고 오는게 말이 맞다고 생각합니다.제가 잘못이해한걸까요?
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
logging과 print 차이 질문입니다..!
해당 강의에서 너무 수준 낮은 질문일지는 모르겠지만 너무너무 궁금해서요...!회사에서 모델개발을 하는데 logging모듈이 보여서 안그래도 찾아보고 있었는데 이 강의에 자주 등장하더라구요기본적으로 Logging 모듈이 디버그 할때 훨씬 편리하다는건 파악이 되었는데요 혹시 특별히 print를 쓰거나 logging 모듈을 쓰는 경우가 있을까요?예제파일 2-2에도 sub process 가 있는 proc_func 함수엔 print구문을 쓰시고, 메인 함수에는 logging 모듈을 사용하셨는데 특별한 이유가 있을까요?!
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
확장프로그램 질문입니다
강의 중 특정 모듈에 있는 함수를 클릭하면 해당 코드를 볼 수 있게 이동하는? 확장프로그램이 있는것 같은데 혹시 알 수 있을까요..?찾아봐도 못찾겠어서 여쭤봅니다...!
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
안녕하세요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 제가 아직 초보라서 어떻게 적용을 해야될지 몰라서요repository를 사용하셨는데 저는 Dao를 사용하고있는데 어떻게 적용을 해야되는지 몰라서 여쩌 봅니다
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
처음 테스트시에 에러가 나오는데 모르겠네요
처음 테스트 하는데 이렇게 나옵니다.왜 이럴까요? ㅠㅠ
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
named lock, datasource 분리
안녕하세요. 강의를 잘 듣고 있습니다. named lock 사용 시, datasource 분리(커넥션 풀 분리)를 하는게 맞다고 하셨고이유로는 커넥션이 고갈될 수 있기 때문이라고 하셨습니다..커넥션이 고갈되는 이유라면강의에서 한 것 처럼 커넥션 풀의 커넥션 수를 늘리면 되는 것 아닌가 해서요..DB 를 분리해야하는 이유라면 납득은 되는데 단순히 동일한 DB 를 사용하는데 datasource 를 분리해야하는 것은 잘 이해가 되지 않습니다.. 이와 관련한 자세한 설명 부탁드립니다. 감사합니다.
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI)
KeyboardInterrupt 시 p.join에서 exception 발생
w_worker = Process(target=self.w_job, args=(w_queue,)) w_worker.start() workers.append(w_worker) try: ~ except KeyboardInterrupt: for w in workers: w.join()안녕하세요 강사님,w.join()에서 아래와 같은 exception이 발생하는데, 어떤 문제인지 모르겠어서 질문드립니다.Exception ignored in atexit callback: <function _exit_function at 0x7f61a90b72e0> Traceback (most recent call last): File "/usr/lib/python3.10/multiprocessing/util.py", line 357, in _exit_function p.join() File "/usr/lib/python3.10/multiprocessing/process.py", line 149, in join res = self._popen.wait(timeout) File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 43, in wait return self.poll(os.WNOHANG if timeout == 0.0 else 0) File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 27, in poll pid, sts = os.waitpid(self.pid, flag) KeyboardInterrupt:해당 에러는 어떤 부분때문에 발생하는 지, 어떤 선행작업이 필요한지 궁금합니다.
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
KeyboardInterrupt 시 p.join에서 exception 발생
w_worker = Process(target=self.w_job, args=(w_queue,)) w_worker.start() workers.append(w_worker) try: ~ except KeyboardInterrupt: for w in workers: w.join()안녕하세요 강사님,w.join()에서 아래와 같은 exception이 발생하는데, 어떤 문제인지 모르겠어서 질문드립니다.Exception ignored in atexit callback: <function _exit_function at 0x7f61a90b72e0> Traceback (most recent call last): File "/usr/lib/python3.10/multiprocessing/util.py", line 357, in _exit_function p.join() File "/usr/lib/python3.10/multiprocessing/process.py", line 149, in join res = self._popen.wait(timeout) File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 43, in wait return self.poll(os.WNOHANG if timeout == 0.0 else 0) File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 27, in poll pid, sts = os.waitpid(self.pid, flag) KeyboardInterrupt:해당 에러는 어떤 부분때문에 발생하는 지, 어떤 선행작업이 필요한지 궁금합니다.
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
ServiceException: Unable to create requested service 뜨는 분들 보세요
ServiceException: Unable to create requested serviceHibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set프로젝트 시작했는데 이런 에러 뜨시는 분들 해결책 공유 드립니다.우선 첫번째로 Mysql 서버가 켜져있는지를 확인해봅니다. Workbench를 켜서 Mysql connect를 해주세요.그래도 안 된다면, 두번째로 application.yaml에 아래처럼 코드를 추가해줍니다.이처럼 database:mysql을 추가해줍니다.이렇게 하면 대부분 해결되실겁니다. ps. 추가적으로 이후에 unknown database라는 주의 문구가 뜨는 분들은 해당 이름으로 database를 아직 만들지 않아서 그렇습니다. url에 들어가는 이름으로 mysql workbench에서 database를 만들어서 진행하세요.
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
경쟁상태,교착상태, 메모리영역
안녕하세요 선생님 !데드락 강의 내용 중 질문이 있어 글 남깁니다.[1] 경쟁상태, 교착상태 개념저는 mutex나 semaphore가 경쟁상태를 예방하기 위해 사용하는 개념으로 알고 있습니다. 그리고 mutex나 semaphore의 사용으로 인해 발생할 수 있는 문제가 교착상태라고 알고 있습니다. 그런데 강의에선 mutex나 semaphore가 경쟁상태나 교착상태를 예방하기 위해 사용된다고 해서잠시 개념의 혼동이 오고 있습니다.어떻게 mutex나 semaphore가 교착상태의 원인이 아니라 교착상태를 해결할 수 있는 개념인지 설명 부탁드립니다.[2] 메모리영역 질문class FakeDataStore: def __init__(self): self.value = 0 에서 저는 value는 스택영역에 쌓이고 0 이라는 숫자 객체는 힙영역에 쌓이는 걸로 이해하고 있는데 강의에선 0이라는 객체가 데이터영역에 올라간다고 하셔서 제가 잘못 알고 있는것인지 문의드립니다.
-
해결됨파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI)
ProcessPoolExecutor 사용 시 pid 증가
안녕하세요 강사님,ProcessPoolExecutor를 이용해서 아래와 같이 코드를 작성했는데요, return된 pid를 출력해보면 계속 증가하는 모습을 보이는데, python에서 할당받은 pid range 내에서만 circular로 반복되는 걸까요??? 이렇게 계속 증가하는게 별다른 문제는 되지 않을까요?try: while True: with ProcessPoolExecutor(max_workers=6) as ex: processes = {} # submit tasks to the pool processes.update({ex.submit(self.hello, time)}) for future in as_completed(processes, timeout=3): # check for a failure if future.exception(): # report progress LOG.error("Failed get %s", processes[future]) data = future.result() module = processes[future] pid = data
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
ProcessPoolExecutor 사용 시 pid 증가
안녕하세요 강사님,ProcessPoolExecutor를 이용해서 아래와 같이 코드를 작성했는데요, return된 pid를 출력해보면 계속 증가하는 모습을 보이는데, python에서 할당받은 pid range 내에서만 반복되는 걸까요??? 이렇게 계속 증가하는게 별다른 문제는 되지 않을까요?try: while True: with ProcessPoolExecutor(max_workers=6) as ex: processes = {} # submit tasks to the pool processes.update({ex.submit(self.hello, time)}) for future in as_completed(processes, timeout=3): # check for a failure if future.exception(): # report progress LOG.error("Failed get %s", processes[future]) data = future.result() module = processes[future] pid = data
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
multiprocess 환경에서 특정 Process에 문제가 있거나 죽었을때 처리 방법
여러개의 process를 ProcessPoolExecutor 로 돌리거나 multiprocessing.Process 로 만들었을때, 특정 Process에서 문제가 발생하여 죽거나 zombie 가 되었을 때 보통 어떻게 처리하시나요?> 예를 들면 여러 process를 이용해서 컴퓨터를 monitoring 하는 프로그램을 짠다고 했을 때, 특정 monitoring process중 하나가 문제가 생겼을 때 해당 process를 살리거나 다시 실행하거나?여러 process들을 사용하고 있을 때 해당 process들이 잘 돌고 있는지, Queue와 Process를 모니터링할때는 어떤 방법을 사용하시나요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
무한루프
정상적으로 처리되면 무한루프에서 break가 되지만정상적으로 처리되지 않았을 때는 어떤가요?
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
갱신 손실 문제가 일어날 것 같은 로직에는 무조건 동시성 제어를 해줘야할까요?
안녕하세요 선생님, 먼저 좋은 강의 감사드립니다.강의를 들으며 갱신 손실 문제를 해결하기 위한 여러 방법들을 학습하며 문득 이런 고민이 생겼습니다. 갱신 손실 문제가 일어날 것 같은 로직(예: 재고 감소)을 구현할 때, 구현 단계에서부터 동시성 제어를 처음부터 고려해야하는가? 고려한다고 했을 때, 트래픽이 얼마나 될지 모르는 상황에서 어떤 방법을 사용할 것인가?이에 대한 제 생각은 이렇습니다. 처음 로직을 작성할 때부터, 갱신 손실 문제가 운영 중에 발생한다면 큰 문제가 될 수 있으므로 반드시 구현 단계에서 부터 고려한다. 갱신 손실 문제가 아예 일어나지 않는 트래픽이더라도 어차피 성능상 손해보는 것은 없을 것이다.트래픽이 얼마가 될지 모르므로 우선 Optimistic Lock을 우선적으로 사용하고, 성능이 안 나오면 Pessimistic Lock 을 사용한다.저는 이렇게 생각했는데, 선생님께서는 위와 같은 상황이라면 어떻게 구현하실 건지 궁금합니다. 또 일단 갱신 손실 문제를 핸들링 하는 상황이라면 Redis나 Named Lock이 아닌 Optimistic Lock, Pessimistic Lock 을 가장 먼저 고려하실 건지도 궁금합니다.읽어주셔서 감사합니다. :)
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
redisson subscribe
그냥 궁금해서 redis-cli에서 "subscribe 1" 을 하고 Redisson 실습 시 락에 대한 메시지가 날아오는 지 궁금해서 해봤더니 아무 내용도 안 오네여? 아예 상관 없는 내용인가여 ㅋㅋㅋ..