👩‍💻 Develope

👩‍💻 Develope/Python

[Python] 동시성 프로그래밍 (1) 프로세스, 스레드

[Python] 동시성 프로그래밍 (1) 프로세스, 스레드동시성 프로그래밍은 여러 작업을 동시에 수행할 수 있도록 하는 프로그래밍 기법이다.이는 여러 프로세스나 스레드를 사용하여, 동시에 실행되는 프로그램을 작성하는 것을 포함한다. 동시성 프로그래밍은 특히 멀티코어 프로세서와 네트환경에서 중요하며, 이 방식은 다음과 같은 두 가지 주요 개념들을 포함한다.병렬성 (Parallelism)여러 작업이 동시에 실행되는 것비동기성 (Asynchrony)작업이 시작된 후, 그 작업이 완료될 때 까지 기다리지 않고 다른 작업을 수행 프로세스(Process) 스레드(Thread)멀티코어 프로세서의 발전으로, CPU의 모든 코어를 활용하여 작업을 병렬로 처리함으로써 처리 시간을 단축할 수 있다. CPU는 프로세스를 실행..

👩‍💻 Develope

[etc] 동기(Synchronous)와 비동기(Asynchronous)

[etc] 동기(Synchronous)와 비동기(Asynchronous) 이번에 Tornado 웹프레임워크를 알게되었는데, 해당 웹프레임워크는 비동기 네트워킹을 지원하는 것이 주요 특징이다. 토네이도의 동작 방식을 이해하기 전 동기와 비동기에 대해서 조금 자세히 알아보고자 한다. 프로그래밍에서 동기(Synchronous)와 비동기(Asynchronous)는 작업 처리 방식의 두 가지 주요 패턴이다. 동기(Synchronous)"순서대로" 처리되는 방식이다.말그래도 한 작업이 완료되어야 다음 작업이 시작된다. 예를 들어, 버스가 한 곳에 정차하면 승객이 모두 타고 내린 후에야 출발한다. 승객이 다 탑승할 때까지 기다려야하기 때문이다. 동기 방식은 코드가 간단하고 이해하기 쉬우며, 디버깅이 용이하지만 (문제..

👩‍💻 Develope/Web

[Tornado] Tornado 알아보기

[Tornado] Tornado 알아보기 TornadoTornado는  FriendFeed 에서 개발된 Python 웹 프레임워크이자 비동기 네트워킹 라이브러리다.비차단 네트워크 I/O를 사용하여 Tornado는 수만 개의 개방형 연결로 확장이 가능하다. 따라서 long polling, WebSockets 및 각 사용자에 대해 같이 장기적인 연결 유지가 필요한 애플리케이션에 이상적이다. Threads and WSGI토네이도는 대부분의 Python의 웹프레임워크와 다르게 WSGI(Webserver Gateway Interface) 기반이 아니며, 일반적으로 프로세스 당 하나의 스레드로만 실행된다. 모듈에서 WSGI를 일부 지원하지만, 대부분의 애플리케이션은 WSGI를 사용하는 대신 토네이도 자체 인터페이스..

👩‍💻 Develope/Python

[Python] pip freeze 명령어 사용 시 패키지 버전이 제대로 나오지 않을 때

[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..

👩‍💻 Develope/Python

[Python][bs4] BeautifulSoup4에서 텍스트로 파싱하기

[Python][bs4] BeautifulSoup4에서 텍스트로 파싱하기저번에 파이썬으로 웹 크롤링을 할 수 있는 BeautifulSoup 라이브러리에 대해 간략하게 포스팅을 했었다. 이번에 BS4를 이용하여 HTML 문서를 파싱을 해야하는 일이 있었는데, 해당 문서가 tag만 있고 id값이나 class값이 없어 원하는 값을 파싱하기 매우 곤란한 상황이였다...😥 믿을건 태그값 내의 텍스트 밖에 없어서, 이번 포스팅에서 bs4를 이용해 텍스트 데이터를 파싱하는 방법에 대해 알아보고자 한다. BeautifulSoup4의 기본 사용법은 다음 포스팅을 참고하면 된다. [Python] Beautiful Soup(bs4)[Python] Beautiful Soup(bs4)파이썬(Python)에는 여러 웹 스크래핑..

👩‍💻 Develope/Python

[Python] glob

[Python] globglobglob 모듈은 파일 및 디렉토리 경로를 패턴으로 검색할 수 있도록 도와주는 파이썬의 기본 라이브러리다.이를 활용하면 특정 확장자나 이름을 가진 파일을 쉽게 찾아낼 수 있다. 모듈 사용법1. 기본 사용법먼저 모듈을 import 해준다.import globglob은 파일 경로 패턴을 매칭하여 해당하는 파일들의 리스트를 반환한다.간단한 예제로 현재 디렉토리에서 모든 파일을 검색해보자.files = glob.glob(*)print(files)## result['file1.txt', 'scripts.py', 'image.jpg'] 2. 특정 확장자의 파일 검색특정 확장자의 파일만 검색하고 싶다면, 파일명 뒤에 확장자를 명시하면 된다.예를 들어 .txt 파일만 검색해보자.txt_fi..

👩‍💻 Develope/Python

[Python] SQLAlchemy 이해하기

[Python] SQLAlchemy 이해하기 SQLAlchemy란?SQLAlchemy는 파이썬을 위한 강력한 SQL 도구이자 객체 관계 매핑(ORM) 라이브러리다.개발자들에게 데이터베이스와 상호 작용할 수 있는 효율적이고 유연한 인터페이스를 제공하며,복잡한 쿼리 실행, 데이터베이스 스키마 조작, 파이썬 객체와의 통합을 쉽게 할 수 있다. SQLAlchemy는 크게 두 가지 주요 구성 요소로 나눌 수 있다.CoreSQL 표현 언어를 사용하여 데이터베이스와 직접 상호 작용하는 레이어SQLAlchemy의 기본 기능으로, 데이터베이스 쿼리를 직접 작성하고 실행할 수 있음ORM (Object-Relational Mapper)SQLAlchemy의 객체 관계 매핑 레이어파이썬 클래스와 데이터베이스 테이블 간의 매핑을..

👩‍💻 Develope/Python

[Pandas] to.sql()

[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..

👩‍💻 Develope/Python

[Pandas] apply로 다중 반환 값을 여러 열에 할당하기

[Pandas] apply로 다중 반환 값을 여러 열에 할당하기데이터 프레임에서 각 행의 특정 열에 함수를 적용하고, 그 결과를 여러 열에 나누어 저장하는 작업은 데이터 처리 과정에서 자주 발생하는 요구다. 이는 apply 함수를 활용하여 이를 간단하게 구현할 수 있다. apply와 lambda를 활용해 특정 열에 함수를 적용하고,결과를 여러 열로 나누어 담는 방법에 대해 알아보자. 다중 반환 값 할당판다스의 apply 함수는 데이터프레임의 행(axis=1) 또는 열(axis=0)에 대해 함수를 적용할 수 있게 해준다.이때, 반환된 값이 여러 개라면 이를 새로운 열로 확장할 수 있다. 아래는 데이터프레임의 'A'열에 대해 각 값을 두 배와 세 배로 만드는 함수를 적용하고,그 결과를 새로운 두 개의 열에 ..

👩‍💻 Develope/Python

[Pandas] 데이터프레임에서 날짜와 시간 다루기

[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)..

👩‍💻 Develope/Python

[Python] 파일 날짜 가져오기

[Python] 파일 날짜 가져오기파이썬에서는 'os' 모듈과 'datetime' 모듈을 활용하여 파일의 날짜 정보를 손쉽게 얻을 수 있다. 파일의 생성 날짜 가져오기파일의 생성 날짜를 가져오기 위해 os.stat 함수를 사용하고, 반환된 결과에서 st_ctime 속성을 참조한다.이 속성은 파일의 생성 시간을 나타낸다.import osfrom datetime import datetime# 파일 경로file_path = 'test.yaml'# 파일 상태 정보 가져오기file_stat = os.stat(file_path)# 생성 날짜 및 시간 가져오기creation_time = datetime.fromtimestamp(file_stat.st_ctime)print("파일 생성 날짜 및 시간:", creatio..

👩‍💻 Develope/Python

[Python] multiprocessing

[Python] multiprocessing파이썬의 multiprocessing 라이브러리는 병렬 처리를 통해 CPU 성능을 극대화할 수 있도록 해준다. 멀티프로세싱의 필요성파이썬은 기본적으로 GIL(Global Interpreter Lock)이라는 매커니즘 때문에,하나의 프로세스 내에서 동시에 여러 스레드를 실행하는 데에 제한이 있다. 이를 해결하기 위해 멀티프로세싱을 사용하면, 여러 개의 프로세스를 생성하여 병렬로 작업을 수행할 수 있다. 멀티프로세싱 기본 개념multiprocessing 라이브러리는 여러 프로세스를 생성하고 관리하는데 유용한 도구를 제공한다.주요 개념은 다음과 같다.Process독립적인 프로세스Queue프로세스 간 데이터를 교환할 수 있는 FIFO 구조Pool프로세스 풀을 생성하여 ..

heywantodo
'👩‍💻 Develope' 카테고리의 글 목록