본문 바로가기
네트워크

[python] select vs epoll, 멀티 플렉싱 vs 멀티 프로세스 개념

by meanjung 2021. 7. 27.

▼ 한 방에 이해하기

https://94kimseongjun.tistory.com/71

 

6월14일 epoll, 레벨트리거, 엣지트리거, 멀티캐스트

select() 장단점 장점 - 다양한 운영체제에서 사용 가능 (좋은 이식성) 단점 - 서버가 많은 동시 접속자(Client) 지원 어려움 (FD_SETSIZE로 제한) - 다중화 처리 속도 느림 Select() 함수 리턴 후, 모든 파일

94kimseongjun.tistory.com

 

+

+

+

+ 나의 덧붙임..

 

select 함수의 단점

매번 os에게 관찰 대상을 인자로 전달해야 한다.

 

epoll 개요

select의 대체자. select의 단점을 보완하기 위해 리눅스 환경에서 사용할 수 있도록 만들어졌다.

계속해서 정보를 넘기지 않기 위해서 관찰 대상인 fd들의 정보를 담은 저장소를 직접 os가 담당한다.

 

python에서 사용하기(server)

기본적인 틀

import select
import socket

### socket 설정 ####################

epoll = select.epoll()
epoll.register(socket.fileno(), select.EPOLLIN)

connection_list = {socket.fileno():socket}

while True:
    events = epoll.poll()
    for fd, event in events:
        sckt = connection_list[fd]
        if sckt is socket: # new connection
            clientSocket, clientAddr = sckt.accept() # new connection
            clientSocket.setblocking(False)
            epoll.register(clientSocket.fileno())
            connection_list[clientSocket.fileno()]=clientSocket
            ### 원하는 처리 ##################
        elif event & select.EPOLLIN: # 수신할 데이터 존재
            data = sckt.recv(BUFSIZE).decode()
            ### 원하는 처리 ##################

if sckt is socket : event가 발생한 소켓이 내가 설정한 listening 중인 socket이라면, 새로운 클라이언트가 접속한 것이다.

elif event & select.EPOLLIN : event가 발생한 소켓이 접속했던 클라이언트 소켓이고, 수신할 데이터가 존재한다면 데이터를 보내왔을 것이다.

 

 

+

멀티 플렉싱 VS 멀티 프로세스

https://wlwwlwwlw.tistory.com/1

 

select 와 epoll

select 멀티프로세스와 멀티플렉싱 select의 설명에 앞서 멀티플렉싱에 대한 이해가 필요하다. 다중접속 서버의 구현을 위해 멀티프로세스 서버를 사용할 수 있으나 많은 양의 연산이 요구되며 필

wlwwlwwlw.tistory.com


참고

https://ozt88.tistory.com/21

 

select 와 epoll

select I/O 통지모델의 할아버지 select select는 싱글쓰레드로 다중 I/O를 처리하는 멀티플렉싱 통지모델의 가장 대표적인 방법이다. 해당 파일 디스크립터가 I/O를 할 준비가 되었는지 알 수 있다면,

ozt88.tistory.com

 

https://aronglife.tistory.com/entry/NetworkTCPIP-%EB%A9%80%ED%8B%B0-%ED%94%8C%EB%A0%89%EC%8B%B14epoll-%ED%95%A8%EC%88%98%EB%A1%9C-%EA%B5%AC%ED%98%84Only-Linux

 

[Network][TCP/IP] 멀티 플렉싱(4)_epoll 함수로 구현(Only Linux)

이 글은 윤성우의 TCP/IP 소켓 프로그래밍 책을 참고하였습니다. 순서 I. select의 단점 II. epoll 개념 III. epoll 관련 함수들 분석 1. epoll_create 2. epoll_ctl 3. epoll_wait IV. 서버 구현 I. select 함수..

aronglife.tistory.com

 

'네트워크' 카테고리의 다른 글

ssh란  (0) 2021.09.05
websocket, socketio 이란?  (0) 2021.07.29
python socket select 함수 이해하기  (0) 2021.07.26
nmap script engine(nse)  (0) 2021.07.10
socket 통신 과정  (0) 2021.07.06

댓글