본문 바로가기
반응형

삽질/Python4

[비동기 삽질] 비동기 처리 첫 삽 뜨기 이론적인 내용 정리는 아래를 참고 2022.06.03 - [Backend MLOps/Fastapi] - [Fastapi] asyncio 제대로 써보기 with pytest - 1 [Fastapi] asyncio 제대로 써보기 with pytest - 1 시작 이번 포스팅은 이론적으로 공부했던 비동기 처리의 요약을 포스팅한다. 다음 포스팅 부터 이 포스팅의 지식에 근거하여 실질적인 성능향상을 끌어내고 얼마나 성능이 향상되는지도 알아 davi06000.tistory.com 거두절미하고 파이썬 비동기처리의 기본은 yield 라고 할 수 있다. 함수에 yield를 사용함으로 제너레이터를 만들 수 있다. yield는 return처럼 어떤 값을 반환하는 타이밍을 지정하는데 __next__ 메소드가 호출되기 전에는 .. 2022. 6. 7.
[ Python 삽질 ] 파이썬 정규표현식 re.sub 을 이용해서 대문자 소문자 바꾸기 // 문제 상황 re 패키지를 쓰면 누구나 쉽게(?) 정규표현식을 이용하여 문자열 다룰 수 있다. 하지만 파이썬에서 re를 잘 쓰다가 보면 이상하게 대소문자를 바꿔주는 메타문자를 사용할 수가 없다. 예컨데 bbc_ads 라는 문자의 _a 를 A로 바꿔야 한다고 할때 골치 아파진다. stackoverflow 에 보면 원래는 일반적인 regex를 사용한다고 할때 import re string = "bbc_ads" new_str = re.sub( "(_)([a-z])", "\u$2", string ) print(new_str) >>> "bbcAds" 이렇게 \u 를 이용하여서 처리할 수 있다고 한다. 하지만 파이썬에서는 \u를 사용하면 유니코드 인코딩을 의미하는 것이기 때문에 ecape되고 만다. 이런 충돌로.. 2021. 8. 3.
[ Python 삽질 ] List의 원소가 한번에 다 바뀔때 deep copy? shallow copy? 사실 이번 글은 정말 부끄러운 내용이다... 초보적인 실수이면서도 정말 잘 고쳐지지 않는 내용이므로 확실하게 짚고 넘어가고자 한다. // 문제 상황 코딩 테스트를 보는데 이미지나 표가 나왔다. 리스트의 리스트를 만들어서 행렬처럼 쓴다고 가정하자. 먼저 zeros를 만들면 이렇게 해서 이렇게 나올 것이고 그다음 이렇게 가운데에 행렬을 복사해 넣어서 zero padding 효과를 주고 싶다고 하면 잘 될까? 결과는 이렇게 나온다. 특히나 numpy의 array를 많이 접해본 경험이 있거나 list 안에 단순한 숫자가 아닌 여러 다른 특성의 객체를 담게 되는 경우 이런 실수는 정말 무의식 중에 비일비재하게 일어난다. // 해결 방안 사실 현장에서는 꼭, 굳이 list of list를 만들어서 사용해야 되는 상.. 2021. 6. 2.
[ Python 삽질 ] __call__() got an unexpected keyword argument 해결법 //서론 파이썬의 클래스는 콜 메소드(맴버 함수)를 가지고 있을 수 있다. 만약 누군가 만들어둔 라이브러리(keras라던가...)를 사용할 때 이 콜 메소드를 함부로 수정하게 되면 수정된 클래스를 단독으로 사용할 때는 문제가 크게 안되지만 다른 모듈과 함께 사용할 때는 문제가 될 수 있다. 나도 어제 오래된 논문의 코드를 하나 실행시키다가 저자가 loss function을 수정해 둔 것을 발견하지 못하고 삽질을 해 버렸다. 자유도가 낮은 코드일 수록 버전이 바뀌면 이런 자잘한 문제들이 발생하기 쉽다. 이 문제는 굉장히 간단한 문제이지만 keras 코드상에서 막상 직면하면 model.fit() 과 model.compile() 안에서 동작하므로 번뜩 떠오르지 않는 디버깅일 수 있다. 따라서 정리해 놓고자 한.. 2020. 12. 29.
반응형