2013-06-10 9 views
2

IO 파일 비동기 (비 차단) :파이썬 eventlet - <a href="http://eventlet.net/" rel="nofollow">eventlet document</a>에 따르면

It uses epoll or libevent for highly scalable non-blocking I/O. 

가 I/O를 여기에 내가 비 - 블로킹 (non-blocking) 알고는 소켓과 상호 작용하는 경우에 대해 설명합니다. 소켓이 이벤트 릿에 의해 초록색/패치가 붙으면 소켓 연결이 비 차단이됩니다.

내 질문은 :이 비 차단 I/O는 파일 I/O도 포함합니까?

답변

2

아뇨 것 중 하나

  • 진정한 콜백와 IO 비동기 : 예기치 않은 제한을 부과; Windows 및 FreeBSD의 좋은 생각
  • 비 차단 IO : (적어도 리눅스와 FreeBSD에서) 해제 파일 시스템 캐시를 여전히 (일반적으로 사용되는 파일 시스템에 적어도 리눅스) IO 차단하지 않을 해당 파일을 보장하지
  • 스레드 풀 : 예기치 않은 성능과 메모리를 초래은

스레드 풀 비록 쉬운, 대부분의 휴대용 가장 예측 가능한 방법입니다 비용이 든다. eventlet.tpool.execute으로 전화를 쉽게 감쌀 수 있습니다.

+0

그게 내가 알아 낸거야, 소켓 연결처럼, eventlet은 green/async no problem을 만들 수있다. 그러나 I/O 파일을 tpool에서 사용하지 않는 한 Greenpool은 비동기로 만들 수 없습니다. 따라서 녹색 쓰레드로 파일 I/O를하는 것은 의미가 없습니다. 맞습니까? 동일한 프로세스에서 다른 모든 것을 쉽게 협업 적으로 차단할 수 있기 때문입니다. – Shengjie

+0

예 아니요. 각각의'open' 또는 다른 파일 작업은 실제로 모든 녹색 스레드를 차단합니다. 그러나 그것이 블록하는 시간은 대개 아주 작습니다. 다른 한편으로 아마존 EC2와 같은 대량의 공유 호스팅 (예 : 디스크 IO 기아 상태)으로 배포하는 경우 오랫동안 차단 될 수 있으며 'tpool'이 매우 유용합니다. 모든 것을 측정하는 것이 성공의 열쇠입니다. – temoto

관련 문제