본문 바로가기
Study (Data Science)/Python

참고) Enumerate/Yield/Generator/Try/Accept/Multiprocessing

by 콜라찡 2022. 11. 29.

Enumerate

  • for문에서 인덱스도 같이 출력할 때.
  • for i, value in enumerate(리스트명)
my_list = ['a','b','c','d']

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

Generator, yield

  • yield를 쓰면 generator로 연결된다.
  • generator는 lazy iterator.
  • 반복문을 출력할 때에도 주르륵 출력하는 것이 아니라,
  • 하나 출력하고 쉬고, 하나 출력하고 쉬고.
  • 데이터가 많을 때 메모리 사용이 효율적이어서 자주 사용하는 파이썬의 기능.
  • 참고 사이트 : https://www.daleseo.com/python-yield/

 

 

파이썬의 yield 키워드와 제너레이터(generator)

Engineering Blog by Dale Seo

www.daleseo.com

 

Try-Except

  • 파이썬의 에러구문을 피하고 싶을 때.
  • 내가 에러인지 판단하도록, 에러라면 어떤 행동을 취할지를 코딩하는 함수.
a = 10
b = 0 

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

Multiprocessing

  • 작업속도를 높여주는 함수
  • 한 작업을 멀티로 나눠해서 속도를 높임 (속도 = 성능)

from.aiffel

  • 작업을 두 쪽으로 나눠서 하다보니 5초만에 결과가 두개씩 나와 10초가 걸렸다.
  • 출력은 ranmdomly.
import multiprocessing

def count(name):
    time.sleep(5)
    print("finish:"+name+"\n")    # 이까지가 수행할 작업이고.
    

num_list = ['p1','p2', 'p3', 'p4']

if __name__ == '__main__':                      # 여기서 시작이란 뜻
    pool = multiprocessing.Pool(processes = 2)  # 병렬 처리시, 2개의 프로세스를 사용. 이건 컴터 CPU 갯수만큼 적어주는게 좋음(갯수 알아보기 grep -c processor /proc/cpuinfo)
    pool.map(count, num_list)     # 병렬화 함수. count함수에 num_list의 원소들을 하나씩 넣는다. 여기서는 원소가 4개이므로 4개의 함수에 각각 들어감. count('p1'), count('p2'), count('p3'), count('p4')
    pool.close() # 일반적으로 병렬화 부분이 끝나면 나옵니다. 더 이상 pool을 통해서 새로운 작업을 추가하지 않을 때 사용합니다.
    pool.join()  # 프로세스가 종료될 때까지 대기하도록 지시하는 구문으로써 병렬처리 작업이 끝날 때까지 기다리도록 합니다.
728x90

댓글