파이썬에서 현재 프로세스의 pid와 쓰레드의 id 값을 어떻게 얻어올까요? 이 방법을 알아보겠습니다. 명령어는 window에 설치된 WSL-2, ubuntu 22.04 버전에서 실행하였습니다. 먼저, os.getpid()로 현재 프로세스의 pid (process id)를 얻어올 수 있습니다. 실행해 보겠습니다. python3 test.py를 실행시켜 보니, 130이라는 값이 출력됩니다. pstree가 깔려 있다면, pstree -p로 부모 프로세스와 자식 프로세스들을 한눈에 볼 수 있습니다. python3(130)이라고 되어 있습니다. 이는 python3 프로세스의 pid가 130이라는 것을 의미합니다. ps -aux 명령어를 입력해 보겠습니다. python3 ~ COMMAND를 입력해서 실행시킨 프로세..
Thread 검색 결과
이번 시간에는 RestController에서 Request를 받을 때 마다 그것을 처리하는 쓰레드가 같은지, 다른지. 다르다면 어떤 식으로 쓰레드 들이 request를 처리하는지 실험해 보도록 하겠습니다. 이 글에서는 내장 톰캣을 이용하였습니다. 먼저, 프로젝트 구조는 위와 같습니다. 컨트롤러 역할을 하는 testController가 있습니다. 그리고 설정 값을 저장해 놓은 properties 파일이 하나 있습니다. 포트는 7780으로 설정해 놓았습니다. testController에는, /test로 get 요청을 받으면, 처리할 메소드인 test가 있습니다. 현재 쓰레드의 이름만 리턴하게 됩니다. 예를 들자면, Main과 같은 이름을 말합니다. Thread.currentThread()는 현재 실행중인 쓰..
All or nothing. 원자성이라고 이야기를 합니다. 어떠한 연산이 들어왔을 때, 실행이 되거나, 그렇지 않거나. 둘 중 하나의 상태가 되어야 합니다. 데이터 베이스에서 '트랜잭션' 이라는 것을 배우면 ACID라 해서 나오는 용어이기도 합니다. 아마, 그것을 배우시면 이런 그림도 많이 보셨을 거라 생각합니다. Commit은 Q가 반영이 된 상태를, Abort는 Q가 반영이 되지 않은 상태를 의미합니다. 만약에 Q를 execute 하라는 명령이 들어왔는데, 잘 수행하다가 실패한 경우에는 Fail로 가야 할 겁니다. 이 경우에는, 부분적으로 수행했던 명령들이 결과에 반영되면 안 됩니다. 잘 수행이 된 경우에는 둘 중 하나입니다. 취소를 하던지, 반영을 하던지. 그러면, 위에서 말하는 '원자성'이 깨지는..
Thread에서, stop, suspend, resume, destroy는 권장하지 않는 함수라는 것은 알고 계실 겁니다. 이 중에서, 오늘은 중간에 있는 두 메서드인 suspend랑 resume에 대한 이야기를 먼저 해 보도록 하겠습니다. 먼저 이 그림은 stop을 할 때에도 그려놓고 있는 것이 좋겠습니다. 여기서 중요한 것은 resume의 대상이, suspend된 상태에서만 쓸 수 있습니다. 이는 링크에 나온 이 문구를 보면 대략적으로 알 수 있습니다. solely라는 말은, 단지라는 부사입니다. solo랑 비슷한 어감일지도 모르겠어요. 영어를 잘 못해서, 정말 그런지는 잘 모르겠습니다. 혹이 이에 대해 아시는 분 있으면 댓으로 알려주시면 감사하겠습니다. 어찌 되었던 문맥상, suspend를 썼을 때..
이번 시간에는 Java의 yield 메서드에 대해서 알아보도록 하겠습니다. 사실, 이것은 백준 사이트에서 yield 관련한 질문이 들어와서 레퍼런스 보면서 조금이나마 알게 되었습니다. 물론, 그 질문에 대한 답은 pc 레지스터와 쓰레드가 어떤 영역을 독립적으로 가지는지에 대해서 찾아보세요. 였지만요. 일단 이 함수는, 설명부터 보는 게 중요할 듯 싶어요. 레퍼런스 사이트에 있는 설명 중 일부만 보도록 하겠습니다. current thread와 스케쥴러가 나오고, 힌트가 나옵니다. 정확하게 해석은 못 하겠지만, 현재 돌고 있는 쓰레드에 대한 무언가의 힌트인 것으로 보여요. 계속 보면 is willing to yield가 나오는데, 양보를 한다는 것이에요. 무엇을? 그것의 current use를. 쓰레드가 프..
최근댓글