Python 성능 최적화: CPU, RAM, SSD 효율적 사용법
1. 변수 선언 (RAM 사용)
Python 변수는 RAM에 데이터를 저장하는 공간. autopep8, flake8 같은 도구를 사용하면 코드 스타일 맞추기 용이.
2. 데이터 타입 (RAM 효율적 사용)
적절한 데이터 타입을 선택하는 것은 메모리 사용을 최적화하는 데 중요.
- int, float, bool, str: 기본 타입
- list, tuple, dict, set: 컬렉션 타입 (tuple은 불변이므로 메모리 효율적)
3. 연산자 (CPU 사용)
연산자는 CPU가 데이터를 처리하는 방식
-산술, 비교, 논리, 할당, 멤버 연산자를 사용하여 효율적인 계산
4. 조건문과 반복문 (효율적 코드 작성)
if-elif-else와 while, for, break, continue를 사용하여 흐름을 제어. 효율적인 제어 흐름이 CPU 사용을 최소화.
5. 함수 (코드 재사용 및 범위 관리)
자주 사용되는 코드를 함수로 묶어 def로 선언하고 return으로 결과를 반환. lambda를 사용하면 간단한 익명 함수를 만들 수 있음.
6. 클래스 (객체지향 프로그래밍)
변수와 함수를 클래스에 묶어 객체지향적으로 코드를 작성. 생성자(__init__ 등)를 사용해 객체를 쉽게 관리.
7. 모듈 (코드를 파일로 관리)
변수를 함수나 클래스로 묶어 .py 파일로 만들고, 여러 프로젝트에서 재사용.
8. 패키지 (모듈을 디렉토리로 관리)
여러 모듈을 패키지로 묶어 버전을 관리. import, from, as를 사용해 패키지를 참조.
9. 입출력 (SSD 사용)
Python은 RAM에서 SSD로 데이터를 이동하거나 반대로 처리할 수 있음. pickle 모듈을 사용해 Python 객체를 파일에 저장하고 다시 불러올 수 있음.
Python 클래스 사용법: 객체 지향 프로그래밍
클래스는 변수와 함수를 묶어서 객체 지향적으로 코드를 작성하는 방법. 협업 시 특히 유용함.
1. 클래스 선언 (코드 작성)
설계도 역할, 필요한 변수와 메서드(함수)를 정의한 후, 객체를 생성해 사용한다.
ex) 은행 예금 계좌를 나타내는 Account 클래스 만들기
class Account:
balance = 0
def deposit(self, amount):
self.balance += amount
def withdraw(self, amount):
self.balance -= amount
* balance : 잔고 변수
*deposit() , withdraw() : 입출금 메서드
2. 객체 생성 ( 메모리 사용)
클래스 선언 후 객체 생성하면 메모리에 해당 객체가 사용된다.
acc1 = Account()
acc2 = Account()
객체 acc1, acc2 가 생성 되어 메모리에 저장됨.
dir(acc1)[-3:], dir(acc2)[-3:]
얘로 함수 목록을 확인할 수 있음.
3. 메서드 실행 ( 코드 실행)
생성된 객체에서 메서드 호출해 코드 실행할 수 있다.
ex) acc1 객체의 잔고를 설정하고, 출금하기
acc1.balance = 1000
acc1.withdraw(600) # acc1에서 600원 출금
acc2.deposit(3000) # acc2에 3000원 입금
객체의 잔고는 다음과 같이 변경된다.
acc1.balance, acc2.balance
클래스를 사용하면 객체를 통해 데이터를 관리하고, 객체 내부에서 필요한 함수들을 호출하여 프로그램을 효율적으로 구성할 수 있다!!!
Python 클래스 사용법: Pandas DataFrame
1. 클래스 선언 : 다른 사람이 만든 클래스 사용
Pandas 의 DataFrame 클래스 다른 사람이 만들어둔 클래스를 가져와 사용하는 예
import pandas as pd
2. 객체 생성
df = pd.DataFrame({'id': list('123'), 'name': list('ABC')})
print(df)
3. 메서드 호출 : DataFrame 메서드 사용
Pandas의 DataFrame 클래스에서 제공하는 메서드 중 하나인 sum() 메서드를 호출
df.sum()
*dif(df) : df 객체의 메서드와 변수목록 확인 가능
*help(df.sum) : sum()메서드 사용법 확인 가능
모든 변수와 함수는 객체로 간주 된다.
객체가 어떤 데이터 타입(클래스)를 가지느냐에 따라 사용가능한 메서드와 함수가 다름
acc = Account()
print(type(acc)) # Account 클래스 타입
#data1 객체 데이터타입 : str
#data1 객체 클래스 : str
data1 = 'python'
print(type(data1)) # str 클래스 타입
print(dir(data1)[-3:]) # str 객체의 마지막 세 개 메서드 확인
*str 클래스에 정의된 data.upper() 사용가능
Python 클래스 사용법: Numpy
numpy 배열 객체도 마찬가지로 np. array() 로 생성하고 해당 객체 타입 확인 가능
import numpy as np
arr = np.array([1,2,3])
print(type(arr),arr)
Python 클래스 사용법: 생성자와 연산자 메서드
1. 생성자 메서드 : __init__()
객체의 초기값을 설정하는 용도
class Account:
def __init__(self,balance):
self.balance = balance
def deposit(self,amount):
self.balance +=amount
def withdraw(self,amount):
self.balance -= amount
2. 객체 생성과 메서드 호출
acc = Account(1000) # 생성자 메서드로 초기값 설정
acc.deposit(1000)
print(acc.balance) # 출력: 1000
3. 연산자 메서드 : __add__()
class Number:
def __init__(self, data):
self.data = data
def __add__(self, obj):
self.data -= obj.data # '+' 연산을 '-'로 재정의
return self.data
num1 = Number(3)
num2 = Number(2)
print(num1 + num2) # 출력: 1
'Dev > 웹크롤링' 카테고리의 다른 글
[웹크롤링]Web 구조와 개념 (0) | 2024.09.19 |
---|