FUNDAMENTAL | 06-1. 파이썬 활용

yeonk·2021년 9월 14일
0

aiffel-ai-bootcamp

목록 보기
13/38
post-thumbnail

20210914



1. python



퍼포먼스와 생산성

퍼포먼스(성능) : 코드를 짜서 실행을 시켰을 때 얼마나 빨리 처리가 되는가

생산성: 똑같은 기능을 하는 프로그램을 얼마나 빨리 작성할 수 있는가

  • 생산성이 좋은 언어들은 퍼포먼스가 떨어지고 퍼포먼스가 좋은 언어는 생산성이 떨어진다.

  • 목적에 맞게, 상황에 맞게 언어를 선택하고 사용하는 방법을 배워야 함

  • 개발하고자 하는 프로젝트의 성능과 개발 기간을 고려해서 언어를 설정






파이썬 성능

  • 높은 생산성

    • 다양한 모듈을 라이브러리화하여 제공
    • pip를 통해 얼마든지 쉽게 설치할 수 있는 써드파티 라이브러리: 개발기간 단축
  • 코드의 간결함

  • 빠른 개발 속도

  • 스크립트 언어

    • 스크립트 언어로 실시간으로 코드가 실행

    • 스크립트 언어: 기존에 이미 존재하는 소프트웨어(애플리케이션)를 제어하기 위한 용도로 쓰이는 언어

      나무위키: 스크립트 언어






2. for문 활용

실행시간 측정

import time
start = time.time()  # 시작 시간 저장

a = 1
for i in range(100):
	a += 1
 
# 작업 코드
print("time :", time.time() - start) # 결과는 '초' 단위 입니다.






enumerate()

리스트, 문자열, 튜플 등이 있는 경우 순서와 리스트의 값을 함께 반환해주는 기능

my_list = ['a','b','c','d']

for i, value in enumerate(my_list):
    print("순번 : ", i, " , 값 : ", value)






이중 for문

for 안에 또 for를 쓰는 것

my_list = ['a','b','c','d']
result_list = []

for i in range(2):
    for j in my_list:
        result_list.append((i, j))
        
print(result_list)






리스트 컴프리헨션(list Comprehension)

리스트 등 순회형 컨테이너 객체로부터 이를 가공한 새로운 리스트를 생성하는 방법

my_list = ['a','b','c','d']

result_list = [(i, j) for i in range(2) for j in my_list]

print(result_list)






제너레이터(Generator)

이터레이터를 생성해주는 함수.
yield라는 키워드 사용

  • 파이썬에서는 이터레이터만 생성하고 값이 필요한 시점이 되었을 때 값을 만드는 방식을 사용(지연평가: 데이터 생성을 뒤로 미루는 것)

  • 리스트의 이터레이터를 변수에 저장한 뒤 next 메서드를 호출해보면 요소를 차례대로 꺼낼 수 있다.

  • 반복 가능한 객체는 요소를 한 번에 하나씩 가져올 수 있는 객체이고, 이터레이터는 next 메서드를 사용해서 차례대로 값을 꺼낼 수 있는 객체

  • 제너레이터는 yield에 지정한 값이 next 메서드(next 함수)의 반환값으로 나옴

  • 제너레이터는 함수의 끝까지 도달하면 StopIteration 예외가 자동으로 발생

  • yield: 값을 함수 바깥으로 전달하면서 코드 실행을 함수 바깥에 양보






3. Try - Except

예외 처리를 위한 방법
예외(exception): 코드를 실행하는 중에 발생한 에러를 뜻

  • 예외 처리:
    코드를 수행하다가 에러가 발생했을 때 그 에러를 무시하게 하거나 에러 대신 적절한 처리를 해주게 하는 등의 작업

출처: AIFFEL FUNDAMENTAL_ 6. 파이썬 잘하는 척 해보자

Try - Statements(코드) - 에러발생 - except






a = 10
b = 0 

try:
    #실행 코드
    print(a/b)
		
except:
    print('에러가 발생했습니다.')
    #에러가 발생했을 때 처리하는 코드
    b = b+1
    print("값 수정 : ", a/b)






4. Muliprocessing

컴퓨터가 작업을 처리하는 속도를 높여주는 방법 중 하나

parallel processing: 병렬 처리

serial processing: 순차 처리로 번역

pool = multiprocessing.Pool(processes = n): 병렬 처리 시, n개의 프로세스를 사용

pool.map(a, b): 병렬화를 시키는 함수로, a 함수에 b의 원소들을 하나씩 넣음

pool.close(): 일반적으로 병렬화 부분이 끝나면 나옴.
더 이상 pool을 통해서 새로운 작업을 추가하지 않을 때 사용

pool.join(): 프로세스가 종료될 때까지 대기하도록 지시하는 구문.
병렬처리 작업이 끝날 때까지 기다리도록 함.






import multiprocessing

def count(name):
    for i in range(0, 100000000):
        a = 1 + 2
    print("finish : ",name)
    
    
num_list = ['p1','p2', 'p3', 'p4']

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes = 4)
    pool.map(count, num_list)
    pool.close()
    pool.join()

0개의 댓글