2010-07-09 4 views
1

작은 웹 서버 (localhost에 페이지 만 제공)와 데몬을 포함하는 작은 다중 스레드 클라이언트 측 파이썬 응용 프로그램을 작성하고 있습니다. 웹 서버는 데이터를로드하고 영구 "데이터 저장소"에 저장하고 데몬은이 데이터를 처리하고 수정하고 더 추가합니다. 또한 디스크와의 동기화도 처리해야합니다.작은 멀티 스레드 파이썬 응용 프로그램에서 데이터를 공유하고 저장해야합니까?

저는 가능한 한 SQL이나 다른 데이터베이스와 같은 복잡한 외부적인 것들을 피하고 싶습니다.

데이터 저장소를 디자인하는 좋은 방법은 무엇입니까? 솔루션에 표준 파이썬 만 사용하는 경우 보너스 포인트.

답변

0

AFAIU는 파이썬으로 부수적으로 작성된 두 개의 서로 다른 프로세스 사이에서 통신하기를 원하기 때문에 원하는 것은 너무 파이썬 전용이 아닙니다. 이것이 실제로 문제가된다면 일반적인 해결책이 아닌 Python 특정 솔루션을 찾아야합니다.

예를 들어, Redis와 같은 단순한 No-SQL 키 - 값 데이터 저장소는 상황에 맞는 아주 좋은 솔루션이라고 생각합니다. 이러한 목적을 위해 특별히 고안된 도구를 사용하는 "복잡"과는 달리 코드를 실제로 간단하게 만듭니다.

파이썬 전용 솔루션을 고집하는 경우 Python과 함께 사전 설치되어있는 SQLite 용 Python 바인딩을 사용해보십시오. SQLite DB는 데이터 액세스의 의미가 잘 정의되어있는 한 안전하게 두 프로세스에서 동시에 사용할 수 있습니다 (즉, 어쨌든 해결해야하는 문제, 도구에도 불구하고).

+0

다중 처리가 아닌 다중 스레드 응용 프로그램에 대해 이야기하고 있습니다. 그리고 나는 특별히 sqlite 나 redis 같은 것을 피하고 싶다고 말했습니다. 물론 좋은 솔루션을 제공하는 사람이 없다면이 솔루션 중 하나를 선택하겠습니다. 또한, 내가 아는 것은 파이썬에만 국한된 것이 아니라 파이썬으로 응용 프로그램을 작성한다는 것을 알고 있기 때문에 언급 한 것일 수도 있다고 생각합니다. –

+0

@static_rtti - "작은 웹 서버 ... 및 데몬"이란 무엇입니까? 당신은 이것이 하나의 프로세스 내에서 실제로 두 개의 쓰레드라고 말하고 있습니까? (데몬 = 데몬 화 된 프로세스가 아니라 데몬 화 된 프로세스처럼)? 이것이 순수 멀티 쓰레딩 솔루션이라면, "데이터 저장소"에 대한 이야기는 디스크상의 파일을 두 스레드 간의 IPC 수단으로 사용하기를 원하기 때문에 더 혼란 스럽습니다. 실제 아키텍처가 무엇인지 명확히 할 수 있습니까? –

+1

@static_rtti : 의도가 분명하지 않습니다. 데몬을 언급하면 ​​별도의 프로세스를 생각할 수 있습니다. 이것이 정보를 교환하는 파이썬 스레드 일 뿐인 경우에는'Queue' 클래스를 사용하십시오 –

관련 문제