Giter Club home page Giter Club logo

parallel-python's Introduction

Parallel-Python

실습환경

병렬 프로그래밍에서의 통신

  • 공유 상태(shared state)
  • 메세지 전달: 실행중인 프로세스에서 메세지를 교환하는 메커니즘으로 구성된다.
    1. 공유 상태와 달리 데이터 접근이 동시에 발생하지 않는다.
    2. 로컬이나 분산 환경에서 메세지를 교환할 수 있다.

병렬 프로그래밍의 문제점

  • 교착 상태(deadlock): 무한 대기 상태를 뜻하며 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 다음 단계로 진행하지 못하는 상태 한정된 자원을 여러 곳에서 사용하려고 할 때 발생

  • 기아 상태(starvation): 특정 프로세스의 우선 순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태

  • 차이점

    • 교착상태 : 여러 프로세스가 동일 자원 점유를 요청할 때 발생
    • 기아상태 : 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때 발생
  • 기아상태의 해결방안

    1. 프로세스 우선순위 수시 변경을 통해 각 프로세스 높은 우선순위를 가지도록 기회 부여
    2. 오래 기다린 프로세스의 우선순위 높이기
    3. 우선순위가 아닌 요청 순서대로 처리하는 요청큐 사용

Python 병렬 프로그래밍 모듈

병렬 알고리즘 설계

  • 분할 정복 기법

    복잡한 문제의 단위를 발견하고 해결할때까지 영역을 재귀적으로 쪼개서 해결하는 기법

    • 병합정렬(merge sort)와 빠른 정렬(quick sort)같은 정렬 알고리즘을 사용해 해결할 수 있다.
  • 데이터 분해 사용

    입력 데이터에 대해 분해한 후 여러 작업자가 동시에 실행하여 해결하는 기법

    • ex) 행렬 곱
  • 파이프라인으로 태스크 분해

    큰 태스크를 병렬 방식으로 실행하는 더 작은 독립적인 태스크로 나누어 해결하는 기법

    • ex) 자동차 공장 조립라인

프로세스 간 통신 이해

  • IPC(interprocess communication): 프로세스 사이에 정보를 교환

    1. 동일한 머신에서 실행하는 곳일 경우 여러가지 방법이 있음(공유 메모리, 메세지 큐, 파아프)
    2. 분산환경일 경우(소켓, 원격프로시저 호출(RPC-Remote Procedure Call))
  • 네임드 파이프: 파일 디스크립터 사용을 통한 IPC 통신(Python에서 시스템 콜을 통해 구현된다.)

    ex) 데이터를 쓰고 읽기 위한 선입, 선출 구조를 들 수 있다.

분산 시스템 모듈

  • PP(Paralle Python): 로컬 프로세스뿐만 아니라 컴퓨터 네트워크를 통해 물리적으로 분산된 프로세스 간의 IPC를 구축하는 모듈 즉, 여러 PC에 분산처리 시키는 작업

    장점

    1. 부하 분산을 개선하기 위해 프로세서 개수를 자동으로 감지
    2. 할당된 많은 프로세스를 실행 시간에 변경 가능
    3. 실행 시간에 부하 분산
    4. 네트워크를 통해 자원을 자동으로 발견

    두가지 방식으로 병렬 코드 실행을 구현할 수 있음.

    1. 동일한 머신안에 다중 프로세서/코어가 있는 SMP 아키텍처 구성
    2. 네트워크에서 머신을 통해 태스크 분산 구성(클러스터 형태)
  • Celery: PP와 동일한 개념

    장점

    1. 인터넷에서 퍼진 작업자 사이나 로컬 작업자들에게 투명한 방법으로 태스크를 분산
    2. 설정을 통해 작업자의 동시성을 간단한 방법으로 변경(프로세스, 스레드, 게벤트, 이벤트렛)
    3. 동기식, 비동기식, 주기식, 태스트 스케줄링을 지원
    4. 오류가 났을 때 태스크를 다시 실행

    구성

비동기 프로그래밍

  • asyncio 모듈

parallel-python's People

Contributors

zusdn90 avatar

Watchers

 avatar  avatar

Forkers

jonhyuk0922

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.