[Python] Asyncioasyncioasyncio는 asycn/await 구문을 사용하여 동시성 코드를 작성하는 라이브러리다.asyncio는 고성능 네트워크 및 웹서버, 데이터베이스 연결 라이브러리, 분산 작업 큐 등을 제공하는 여러 파이썬비동기 프레임워크의 기반으로 사용된다. import asyncioasync def main(): print('Hello ...') await asyncio.sleep(1) print('... World!')asyncio.run(main()) asyncio는 다음과 같은 API를 제공한다.고수준 API코루틴, 네트워크 IO/IPC, Queue, 동기화 저수준 API이벤트 루프, Transport, Future Runnerasyncio.run(coro..
[Python] 동시성 프로그래밍 (2) 코루틴(Coroutine) 동시성 (Concurrency) 과 병렬성 (Parallelism) 동시성(Concurrency)이란, 여러 작업이 겹쳐서 실행될 수 있는 방식을 의미한다.이를테면, 여러 작업이 동시에 실행되는 것처럼 보이지만, 실제로는 CPU가 짧은 시간 단위로 여러 작업을 번갈아가면서 처리하는 방식이다. 병렬성(Parallelism)이란, 여러 작업을 실제로 동시에 처리하는 것을 의미한다. 즉, 여러 CPU코어가 각각 별도의 작업을 동시에 수행하는 방식이다. 병렬성은 실제로 물리적인 여러 프로세서나 CPU 코어가 필요하다. 즉, 동시성은 "논리적"에 가깝고 병렬성은 "물리적"에 가깝다. 코루틴(Coroutine)코루틴은 파이썬을 비롯한 여러 프로그래..
[Python] 동시성 프로그래밍 (1) 프로세스, 스레드동시성 프로그래밍은 여러 작업을 동시에 수행할 수 있도록 하는 프로그래밍 기법이다.이는 여러 프로세스나 스레드를 사용하여, 동시에 실행되는 프로그램을 작성하는 것을 포함한다. 동시성 프로그래밍은 특히 멀티코어 프로세서와 네트환경에서 중요하며, 이 방식은 다음과 같은 두 가지 주요 개념들을 포함한다.병렬성 (Parallelism)여러 작업이 동시에 실행되는 것비동기성 (Asynchrony)작업이 시작된 후, 그 작업이 완료될 때 까지 기다리지 않고 다른 작업을 수행 프로세스(Process) 스레드(Thread)멀티코어 프로세서의 발전으로, CPU의 모든 코어를 활용하여 작업을 병렬로 처리함으로써 처리 시간을 단축할 수 있다. CPU는 프로세스를 실행..
[etc] 동기(Synchronous)와 비동기(Asynchronous) 이번에 Tornado 웹프레임워크를 알게되었는데, 해당 웹프레임워크는 비동기 네트워킹을 지원하는 것이 주요 특징이다. 토네이도의 동작 방식을 이해하기 전 동기와 비동기에 대해서 조금 자세히 알아보고자 한다. 프로그래밍에서 동기(Synchronous)와 비동기(Asynchronous)는 작업 처리 방식의 두 가지 주요 패턴이다. 동기(Synchronous)"순서대로" 처리되는 방식이다.말그래도 한 작업이 완료되어야 다음 작업이 시작된다. 예를 들어, 버스가 한 곳에 정차하면 승객이 모두 타고 내린 후에야 출발한다. 승객이 다 탑승할 때까지 기다려야하기 때문이다. 동기 방식은 코드가 간단하고 이해하기 쉬우며, 디버깅이 용이하지만 (문제..
[Tornado] Tornado 알아보기 TornadoTornado는 FriendFeed 에서 개발된 Python 웹 프레임워크이자 비동기 네트워킹 라이브러리다.비차단 네트워크 I/O를 사용하여 Tornado는 수만 개의 개방형 연결로 확장이 가능하다. 따라서 long polling, WebSockets 및 각 사용자에 대해 같이 장기적인 연결 유지가 필요한 애플리케이션에 이상적이다. Threads and WSGI토네이도는 대부분의 Python의 웹프레임워크와 다르게 WSGI(Webserver Gateway Interface) 기반이 아니며, 일반적으로 프로세스 당 하나의 스레드로만 실행된다. 모듈에서 WSGI를 일부 지원하지만, 대부분의 애플리케이션은 WSGI를 사용하는 대신 토네이도 자체 인터페이스..
[Python] pip freeze 명령어 사용 시 패키지 버전이 제대로 나오지 않을 때현재 서버의 패키지 버전을 확인하여 패키지의 취약점을 검사를 해야하는 일이 있었는데,pip freeze 명령어로 버전을 확인할 때 버전명이 다음과 같이 명시가 되는 경우가 있다.jsonpatch @ file:///home/conda/...찾아보니 pip 19.1 버전부터 일반 버전 지정자 대신 직접 참조를 사용하도록 허용을 한다고 한다.직접 참조는 위와 같이 지정자 @와 명시적 URL로 구성된다. PEP 440 – Version Identification and Dependency Specification | peps.python.orgThis PEP describes a scheme for identifying ve..
[Python][bs4] BeautifulSoup4에서 텍스트로 파싱하기저번에 파이썬으로 웹 크롤링을 할 수 있는 BeautifulSoup 라이브러리에 대해 간략하게 포스팅을 했었다. 이번에 BS4를 이용하여 HTML 문서를 파싱을 해야하는 일이 있었는데, 해당 문서가 tag만 있고 id값이나 class값이 없어 원하는 값을 파싱하기 매우 곤란한 상황이였다...😥 믿을건 태그값 내의 텍스트 밖에 없어서, 이번 포스팅에서 bs4를 이용해 텍스트 데이터를 파싱하는 방법에 대해 알아보고자 한다. BeautifulSoup4의 기본 사용법은 다음 포스팅을 참고하면 된다. [Python] Beautiful Soup(bs4)[Python] Beautiful Soup(bs4)파이썬(Python)에는 여러 웹 스크래핑..
[Python] globglobglob 모듈은 파일 및 디렉토리 경로를 패턴으로 검색할 수 있도록 도와주는 파이썬의 기본 라이브러리다.이를 활용하면 특정 확장자나 이름을 가진 파일을 쉽게 찾아낼 수 있다. 모듈 사용법1. 기본 사용법먼저 모듈을 import 해준다.import globglob은 파일 경로 패턴을 매칭하여 해당하는 파일들의 리스트를 반환한다.간단한 예제로 현재 디렉토리에서 모든 파일을 검색해보자.files = glob.glob(*)print(files)## result['file1.txt', 'scripts.py', 'image.jpg'] 2. 특정 확장자의 파일 검색특정 확장자의 파일만 검색하고 싶다면, 파일명 뒤에 확장자를 명시하면 된다.예를 들어 .txt 파일만 검색해보자.txt_fi..
[Python] SQLAlchemy 이해하기 SQLAlchemy란?SQLAlchemy는 파이썬을 위한 강력한 SQL 도구이자 객체 관계 매핑(ORM) 라이브러리다.개발자들에게 데이터베이스와 상호 작용할 수 있는 효율적이고 유연한 인터페이스를 제공하며,복잡한 쿼리 실행, 데이터베이스 스키마 조작, 파이썬 객체와의 통합을 쉽게 할 수 있다. SQLAlchemy는 크게 두 가지 주요 구성 요소로 나눌 수 있다.CoreSQL 표현 언어를 사용하여 데이터베이스와 직접 상호 작용하는 레이어SQLAlchemy의 기본 기능으로, 데이터베이스 쿼리를 직접 작성하고 실행할 수 있음ORM (Object-Relational Mapper)SQLAlchemy의 객체 관계 매핑 레이어파이썬 클래스와 데이터베이스 테이블 간의 매핑을..
[Pandas] to.sql()to_sql()판다스 데이터 프레임을 SQL 데이터 베이스에 저장하는 방법으로 to.sql() 메서드가 있다.이를 통해 로컬 또는 원격 데이터베이스에 데이터를 쉽게 저장할 수 있다. 기본 사용법먼저 다음과 같이 라이브러리를 import 해준다.import pandas ps pdfrom sqlalchemy import create_enginecreate_engine은 SQLAlchemy 라이브러리에서 제공하는 함수로, 데이터베이스와의 연결을 설정하는 데 사용된다.# 샘플 데이터프레임 생성data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35], 'city': ['New York', 'Los A..
[Pandas] apply로 다중 반환 값을 여러 열에 할당하기데이터 프레임에서 각 행의 특정 열에 함수를 적용하고, 그 결과를 여러 열에 나누어 저장하는 작업은 데이터 처리 과정에서 자주 발생하는 요구다. 이는 apply 함수를 활용하여 이를 간단하게 구현할 수 있다. apply와 lambda를 활용해 특정 열에 함수를 적용하고,결과를 여러 열로 나누어 담는 방법에 대해 알아보자. 다중 반환 값 할당판다스의 apply 함수는 데이터프레임의 행(axis=1) 또는 열(axis=0)에 대해 함수를 적용할 수 있게 해준다.이때, 반환된 값이 여러 개라면 이를 새로운 열로 확장할 수 있다. 아래는 데이터프레임의 'A'열에 대해 각 값을 두 배와 세 배로 만드는 함수를 적용하고,그 결과를 새로운 두 개의 열에 ..
[Pandas] 데이터프레임에서 날짜와 시간 다루기판다스 데이터프레임에서 날짜와 시간을 포함한 데이터를 처리하는 방법에 대해서 알아보고자 한다. 날짜와 시간 데이터 변환하기날짜와 시간 정보가 함께 있는 데이터는 to_datetime 함수를 사용하여 datetime 형식으로 변환할 수 있다.import pandas as pddata = { 'event': ['A', 'B', 'C'], 'datetime': ['2023-08-01 14:30:00', '2023-08-05 09:15:00', '2023-08-10 18:45:00']}df = pd.DataFrame(data)# 문자열을 날짜 및 시간으로 변환df['datetime'] = pd.to_datetime(df['datetime'])print(df)..