본문 바로가기
반응형

전체 글853

Python - Class, self 메모리 할당과 관리 Reference counting Python는 개발 편의성을 위해서 메모리 관리를 별도로 하지 않아도 사용이 가능한 프로그램 언어이다. 그리고 최근에 나오는 언어들은 GC(Garbage Collection)라고 하는 메모리 청소 도구 통해 자동으로 메모리에서 불필요한 데이터를 청소해 준다. 하지만 개발자라면 서비스를 위해 개발을 진행하게 되고, 이는 운영체제에서 장시간 사용되는 프로그램을 작성해야 한다는 의미이다. 이때 메모리 관리를 잘못한다면 안정성에 큰 문제가 생기게 된다. 즉 큰 장애를 만날 수 있다는 의미이다. 여기에서는 메모리 관리가 어떻게 되는지 이해하여, Python 코드를 보다 효과적으로 사용할 수 있을 것이라는 생각에, 관련 자료를 찾아서 정리해본다. Python에서 메모리 관리에 사용하는 방식은 Reference co.. 2024. 3. 25.
Python - List 에서 문자열 포함 유무를 확인 Python에서 List 의 문자열 포함 유무를 확인할 수 있는 3가지 방법에 대해서 정리해 보겠다. 가장 쉽게는 for문을 이용하는 것이다. 이는 익히 사용을 많이 하기 때문에 여기에 정리하지 않겠다. 여기에서는 Pandas 및 지능형 리스트 활용하는 방법에 대해서 정리해 본다. 먼저 Pandas에서 제공하는 str.contains를 통해서 리스트에서 검색이 가능하다. 여기에서 특히 강점은 contains 조건을 다중으로 설정 할 수 있다는 것이다. 아래 코드를 보면 a|b라는 문장을 만들어 a또는b가 포함된 리스트를 확인하는 것이 가능하다. Pandas >>> import pandas as pd >>> >>> abc_list ={'name':['aaaa', 'bcd', 'xyz', 'y']} >>> .. 2024. 3. 25.
Python - sys.exit(0) 과 sys.exit(1)의 차이 exit code OS에서는 해당 프로그램이 HTTP와 유사하게 처리 결과에 따른 오류로 종료되었는지 정상적으로 종료되었는지를 확인하는 Status Code가 있다. 이를 Exit Code라고 하면 1과 0으로 구분된다. exit 0 EXIT_SUCCESS, 작업 성공 exit 1 EXIT_FAILURE, 작업 실패 exit 1로 종료를 하게 되면, 시스템에 존재하는 Error Handler가 동작하게 된다. 프로그램 적으로 보면 Try/Catch 처럼 Catch로 보내게 된다. Python에서도 만약 import sys를 이용해서 종료를 할 수 있는데 이때 코드를 지정하여 종료가 가능하다. 만약 아래와 같이 1로 프로그램을 종료하게 되면, 오류로 인식하여 Error Handler가 동작한다. 다만 시스템 레벨이기 때문에.. 2024. 3. 25.
Python - Zombie Process 처리 timeout Python 프로그램을 하다보면 보통 서브 프로세스를 생성하는 경우가 발새한다. 이때 프로그램의 로직을 잘 작성하였다면, 좀비 프로세스가 생성되지 않는다. 하지만 복잡한 프로그램, 특히 다중 실행이 가능한 멀티 프로세스로 구사하다보면, 종종 문제를 만나게 되는 부분이 종료가 되지 않는 좀비 프로세스들이다. 이를 효과적으로 관리할 수 있는 방안이 무엇일까 고민해보면서 사용할 수 있는 timeout과 필자의 생각에 대해서 정리해본다. timeout Python에서 process를 생성하는 subprocess 라이브러리에서 wait 함수를 이용하여 아래와 같이 timeout을 지정할 수 있다. >>> import subprocess >>> from subprocess import TimeoutExpired >.. 2024. 3. 25.
Python - asyncio 코루틴 await 이해하기 asyncio란 파이썬 3.5 버전부터 지원하기 시작한 코루틴을 사용할 수 있도록 지원해주는 라이브러리이다. asyncio를 사용하기 위해선 함수 앞에 async를 붙여서, 코루틴으로 만들 수 있다. 그리고 코루틴을 사용하고자 한다면, 해당 로직 앞에 await을 붙이면 된다. 즉 await를 붙인 코드에 대해 I/O 대기 등이 있을 경우 다른 코드 라인을 실행하는 구조 이다. 이때 await 뒤에 오는 코드는 코루틴으로 작성된 코드여야 한다. 예를 들어 await 뒤에 time.sleep과 같이 사용한다면 스레드가 중단된다, 코루틴으로 동작하려면, asyncio.sleep을 사용해야 한다. 특정 모듈의 경우 await을 붙여도 코루틴으로 동작하지 않으므로 await 호환성 체크를 해보기 바란다.(Dja.. 2024. 3. 25.
스위치(Switch) - 2024년 상반기 책임질 게임 Top 3 곧 겨울 방학이 시작된다. 이때 즐기기 좋은 잘 만든 게임은 현재 어떤 게임이 있을지 필자가 기대하는 게임 3가지만 정리해본다. (필자 기준으로 겨울에 이불 덮고, 스토리를 보는 게임 위주로 즐길 수 있는 게임들) 1. 호그와트 레거시 Hogwarts Legacy (한글지원) 이미 타 플랫폼으로 게임의 재미가 검증되었다. 가장 큰 장점은 오픈 월드로 해리 포터 세계를 경험해 볼 수 있다는 것이다. 오픈 월드 게임을 스위치를 이용해서 침대에서 편안하게 즐길 생각을 하니 벌써 즐겁다. 호그와트 레거시 Hogwarts Legacy (nintendo.co.kr) 호그와트 레거시는 해리 포터 세계관에서 진행되는 몰입형 오픈월드 액션 RPG입니다. 이제 여러분도 꿈에 그리던 마법 세계에 직접 영향을 끼칠 수 있습니.. 2024. 3. 25.
원신 - [폰타인] 간이 보물 창고 열쇠 1, 2, 3 위치 4.2에 추가된 간이 보물 창고 열쇠 3개를 모아서 난파된 배의 문을 열어 보물 상자를 얻는 월드 기믹이다. 간이 보물 창고 열쇠 1 난파선 꼭대기에 존재한다. 올라가는 길이 많이 미끄러우니 주의... 간이 보물 창고 열쇠 2 어떻게 보면 임무를 시작하기 위한 트리거 되는 열쇠이다. 주변의 보물 사냥꾼들을 처리하면 보물 상장를 열 수 있고 2번 열쇠를 통해 나머지 열쇠를 찾으라는 신호는 준다. 간이 보물 창고 열쇠 3 난파선 잔해중 워프 포인트와 가장 가까운 위치에 있는 잔해에 발굴을 통해서 찾을 수 있다. 열고 들어가면, 진귀한 보물상자와 광석, 신의 눈 하나를 획득 할 수 있다. 2024. 3. 25.
원신 - 아야토 최애? 파티 조합은 with 공격 속도 필자는 아야토 같은 컨셉의 캐릭터를 좋아한다. 타르탈리아를 좋아하는 분도 있겠지만, 앞에서는 숨기면서 뒤의 숨은 뜻을 가지는 캐릭터 컨샙이 매우 마음에 든다. 아야토는 분명 강한 캐릭터는 아니다. 특히 느비예트가 나온 시점에는 더욱 암울하다고 할 수 있다. 하지만 아야토는 물 원소로써 많은 파티 조합이 가능하고, 빠른 공속의 재미는 원신에서 몇 없는 재미를 느끼게 해주기 때문에 오늘은 아야토를 재미있게 즐길 수 있으면서 피해량도 나쁘지 않은 파티를 추천해 보고자 한다. 참고로 무기는 용의 포효를 사용하면서 보호막 효과도 얻을 수 있는 북두를 사용하였다. 북두는 앞으로 잘 사용될 캐릭터 이기 때문에 아직 키워두지 않았다면 지금이라도 키우는 것을 추천한다. 아야토, 북두(1돌)/향릉(6돌), 미카/진(2돌).. 2024. 3. 25.
원신 - 범용성 좋은 5성 한손검 with 안개를 가르는 회광 안개를 가르는 회광는 5성으로써 아무나 사용해도 괜찮은 무기하고 할 수 있다. 따라서 픽업 리스트에 안개를 가르는 회광이 등장한다면, 한번쯤은 시도해 봐도 좋을 것 같다. 기초 공격력 674.33 치명타 피해 44.1% 모든 원소의 피해 보너스를 12/15/18/21/24% 획득하고 「무절(霧切)의 문장」을 획득한다. 무절의 문장: 1/2/3스택의 무절의 문장 보유 시, 각각 8/16/28%, 10/20/35%, 12/24/42%, 14/28/49%, 16/32/56%에 해당하는 자신의 원소 타입의 원소 피해 보너스를 획득한다. 캐릭터가 무절의 문장 1스택을 획득할 수 있는 상황: 일반 공격으로 원소 피해를 가하면 5초간 지속. 원소폭발을 발동하면 10초간 지속. 이 외에 캐릭터의 원소 에너지가 100%.. 2024. 3. 25.
반응형