파이썬 5

[Python] contextvars

fastapi가 등장한 이후로, python에서도 비동기로 구현하는 방식이 많이 활성화되고 있습니다. 멀티 스레딩으로 구현할 때는, thread의 context를 활용해서 로그를 남겨서 쉽게 모니터링 할 수 있었는데 비동기에서는 thread context가 없어서 해당 부분을 해소하기 위해서 등장한 것이 contextvars입니다. contextvars는 파이썬 표준 라이브러리로 따로 설치를 해야하는 것은 없습니다. 사용법은 매우 간단합니다. ContextVar를 한 번 선언을 하고, set 함수를 호출하여 context를 설정해주면 get 함수를 호출해서 가져다 쓸 수 있습니다. 바로 예시 코드를 보겠습니다. import asyncio import contextvars import random impo..

python 2024.01.07

[PYTHON] gmail로 메일 보내기

python에서 gmail을 연결해서 메일을 보내는 코드를 한번 작성해보겠습니다. 메일은 SMTP를 활용하는데, SMTP는 Simple Mail Transfer Protocol의 약자로서 메일을 보내는데 사용되는 프로토콜입니다. python에서 gmail로 메일을 보내기 전에, gmail 설정에서 변경해주어야 하는 것이 있습니다. 아래 이미지와 같이 IMAP 액세스를 설정해주시면 됩니다. python에서는 smtplib을 제공하여 별도의 라이브러리를 설치하지 않고도 STMP를 사용할 수 있습니다. 코드로 바로 보여드리면, 아래와 같이 사용할 수 있습니다. import smtplib from email.mime.text import MIMEText smtp = smtplib.SMTP('smtp.gmail...

python 2021.08.06

[Python] numpy와 랜덤함수

개요 딥러닝을 하다보면, 벡터 연산을 하는 코드를 많이 짜게 됩니다. 딥러닝을 배워서 파이썬으로 개발을 처음 하시는 분들을 보면 종종 파이썬의 기본적인 라이브러리만 활용하여 코드를 짜시는 걸 종종 보았는데요. 결론부터 말씀드리면, 그 경우 너무 느립니다. 파이썬 언어 자체가 속도가 매우 느리기 때문에, 파이썬에서는 C언어를 쉽게 연결하여 사용할 수 있는 방법이 많이 있습니다. 정말 커스텀하게 코드를 짠다면 Cython이라는 것을 사용할 수도 있고, 이미 C언어로 동작하는 라이브러리도 많이 존재합니다. 그 중에서 소개 드릴 것은 Numpy인데요. 아마 파이썬을 조금 써보신 분들은 Numpy를 많이 들어보셨을건데, 왜 써야하는 지 잘 모르시는 분들도 많으실 것 같아요. Numpy를 써야하는 이유는 연산 속도..

python 2021.04.18

[Python] 딕셔너리, Dictionary에서 key를 통해 value를 가져오는 방법

파이썬의 딕셔너리(dictionary)는 key와 value를 쌍으로 가지는 자료형입니다. key를 활용하여 value를 가져올 수 있는 방법이 있는데 그 방법들을 한번 소개해보려 합니다. 1. key를 활용하여 dict[key]로 접근 가장 쉽게 접하는 방식입니다. key를 통해 직접 접근하는 방식입니다. 이 방식의 단점은 존재하지 않는 key에 대해서는 KeyError 에러를 발생시킨다는 것입니다. 예를 들면 이런 식입니다. 2. get 함수 활용 get(key, default=None) 함수는 위와 같은 경우의 단점을 보완합니다. get 함수를 활용하면 key가 존재하지 않는 경우에 대해서 에러를 발생시키지 않고, None 혹은 지정한 default 값을 반환합니다. 아래의 이미지와 같이 활용할 수..

python 2020.08.18

[Python] dict 정렬하기

python에선 dict는 제일 많이 쓰는 데이터구조 중 하나죠. dict는 dictionary의 줄임말이며, key-value 구조로 데이터를 저장해줍니다. dict를 정렬하기 위해서는 sorted() 함수를 사용할 수 있습니다. sorted(dict.items()) 이렇게 사용하시면 dict가 정렬이 되며, 이 때 정렬은 key를 기준으로 정렬하게 됩니다. item을 기준으로 정렬하고 싶다면, 아래와 같이 하시면 됩니다. sorted(dict.items(), key=lambda x:x[1]) 그리고, 만약 역순으로 정렬을 하고 싶다면, reverse=True 옵션을 넣어주시면 됩니다. sorted(dict.items(), reverse=True) sorted(dict.items(), key=lambd..

python 2020.05.27