• 공부한 날짜: 2021.12.05

 

  • cpu_bound(number): 특정숫자까지의 제곱수의 합 계산하는 함수 

 

  • find_sums(numbers): 계산 결과들 리스트에 넣어서 반환하는 함수 

 

  • main 함수: 굉장히 큰 함수도 빠르게 계산할 수 있음 -> 따라해보면 좋을 것 같음 

 

  • main 함수 실행 

  • 공부한 날짜: 2021.12.05
  • threading보다 코드 복잡도 높아짐 
  • 이 부분은 잘 모르겠어서 일단 코드 올려놓고 나중에 공부할 예정 
  • main()에서 get_event_loop()가 없다면서 사용할 수 없다는데 해결책을 아직 못 찾음

 

 

 

 

  • 공부한 날짜: 2021.12.05

 

  • 동시 프로그래밍 패러다임의 변화 발생
  • 싱글 코어: 처리향상 미미하거나 저하 -> 비동기 프로그래밍이 대두됨  -> CPU 연산, DB 연동, API 호출 대기 시간 늘어남
  • 제어권을 넘겨서 다른 작업을 하다가 다시 작업을 이어서할 수 있게함 
  • 파이썬 3.4 -> 비동기(asyncio)가 표준라이브러리로 등장 

 

 

  • 주의해야할 점 -> 비동기 함수에서 비동기 함수로 실행할 때는 반드시 await 입력해야한다 -> 걍 외워야함 

 

  • I/O Bound AsyncIO 예제
  • 같은 내용의 함수를 async(), sync()로 구현 
  • 다른 점 찾아보기 

 

 

1. Async()

  • exe_calculate_async()
  • async로 진행할 함수는 무조건 async def 선언하기 
  • 비동기 함수에서 비동기 함수로 실행하므로 await 입력하기 
  • exe_calculate_async -> process_async
  • asyncio.sleep(i): i 초 동안 태스크 중단 후 다른 태스크 실행 

 

  • process_async()
  • asyncio. wait(): 코루틴 함수에 시간 제한을 두고싶을 때 사용하면 된다-> 이부분은 아직 이해가 잘 가지 않는다 나중에 다시 한번 더 봐야할듯 (해당 내용 사이트: https://www.daleseo.com/python-asyncio/)

 

2. Sync()

 

  • exe_calculate_sync()
  • await asyncio.sleep이 아닌 time.sleep임 

 

  • process_sync()
  • await asyncio.wait()가 아닌 그냥 함수에 파라미터 넣음 

 

  • main 실행 

1. Sync 실행: 하나의 프로세스 진행 중에 다른 프로세스 진행 불가 

2. Async 실행 and 파이썬 3.7 이상 : 다른 프로세스 진행 가능 

3. Async 실행 and 파이썬 3.6 이하 

  • 공부한 날짜: 2021.12.05
  • 실행 흐름에 따라 코드를 논리적으로 진행하는 것이 코딩하는 것에 있어서 가장 중요하다(어떤게 필요한 상황인지 생각하기)

 

    멀티프로세싱이 적합한 상황

  • IO Bound Volume이 매우 커졌을 때
  • 작업량이 늘어났을 때
  • 독립/병렬적으로 처리해야하는 일일 때
  • 독립적이고, 고속 연산 작업에 할 때(CPU)

 

  • I/O Bound Multiprocessing Pool 예제

 

  • session값 초기화 하는 것 -> 눈여겨서 잘 보기
  • 미리 initializing해서 일할 준비를 미리 하는 것 -> 높은 실행속도 보장 

 

  • 각 프로세스 메모리 영역에 생성되는 객체-> 독립적이다
  • 함수 실행 할때마다 객체 생성은 좋지 않음 -> 각 프로세스마다 할당(하기 때문인가?) 확인해보기 

 

  • 실행함수1 : 다운로드 
  • session은 위에서 이미 생성했음-> url만 받으면 됨 
  • multiprocessing.current_process().name: 

 

  • 실행함수2 : 요청 
  • 멀티프로세싱 실행
  • 반드시 process 개수 조절 후 session 객체 및 실행시간 확인 

 

  • main 함수 구현 

 

  • main() 실행 

+ Recent posts