나개체 수영장고,오히려 그것을 구현하 자신을 생각 나는 보이는 것이 주위에 대한 준비 및 테스트 Python 라이브러리입니다.
내가 무엇을 찾았는 다른 사람의 많음이looking지만,점점 많은 똑바른 답을 이렇게 나를 가져왔다 여기를 스택의 오버플로우가 발생합니다.
내 경우에,나는 수가 많은 스레드를 사용하여(<코드>threading</드>module)이 필요로하는 가끔 전화 원격 SOAP 기반 서버입니다. 그들은 각각의 설정은 자신의 서버에 연결하지만,설정하는 소켓을 완료시키는 인증 프로세스는 비싼(그것은 제한된 서버에서),이렇게 공유하고 싶은 풀의 연결을 만들고,더만으로 필요합니다.
면 항목을 풀었는 작업자 서브프,내가 택<코드>원합니다..수영장</드>지만,그들은하지 않습니다. 는 경우 그들은 worker threads,I 있이 구현지만,그들은하지 않습니다.
만약 그들이 MySQL 연결을,내가 택pysqlpool지만,그들은하지 않습니다. 마찬가지로의 정밀한 웹 애플리케이션을 빨리 빌 수 있입니다.
는 경우가 있었다 하나의 스레드를 사용하여,변수의 번호 연결부/저는 것을 고려이 구현지만,나는 그것을 필요로하는 스레드에 안전합니다.
나를 구현할 수 있다 이것을 다시 상당히 빨리,하지만 많은 사람들이 그것을 찾고 생각하는 방식에 대한 답변 Stack Overflow 좋은 것입니다.
그것은 나에게 보인다,당신의 설명에서,그 무엇이 필요 수영장이 있 connections,지 않습니다. 에 대한 간단한 스레드에 안전하게 재사용할 수 있는 연결을에서는큐가 있습니다.큐
인스턴스,전화도 이용하실 수 있습니다. 스레드가 인스턴스화 연결-감싸는 물체,물체의 연결을 통해 헬스클럽 등이 마련되어 있습니다.get()
(는 자동 enqueues 그것을 기다리 없는 경우에는 연결이 현재 볼수 있습니다 그리고 큐를 분리할 때 연결's 준비한다);경우 객체를's 를 사용하여 수행의 연결,그것은 그것을 다시 수영장에서 통해 헬스클럽 등이 마련되어 있습니다.put`.
이's 그래서 약간의 보편적으로 필요한 일반적인 기능이 무엇을 넘어,큐가 있습니다.큐
이미 제공,그것이's 지 않은 놀라운 없이 모듈이 제공하는것은 잘 알려진 또는 인기--를 만들기 위해 열심히 모듈 광범위한 경우 그것은 대략 6 개선의 기능 코드에서(예를 들어 호출하는 사용자의 연결에 공장을 채우 큐에서 하나 사전 또는 시간까지 일부는 최대 수지 큰 추가 값은 일반적으로,어쨌든). "두꺼운 접착제",두껍게 감싸는 기본 기능에서 표준 라이브러리가 모듈없이 상당한 값을 추가,건축 마이너스는 후지만;-).
나는 유사한 문제이고 내가 말해야합니다.큐 아주 좋은,그러나 거기에는 퍼즐 조각. 다음과 같은 클래스는 데 도움이 거래를 보장하기 위한 개체를 찍은 반환되어 있습니다. 예 포함되어 있습니다.
나는've 허용되는 2 가지 방법으로 이 클래스를 사용하려면 키워드 또는 캡슐화체와 함께 소멸자. With 키워드는 바람직하지만 경우에 당신할 수 있't/don't 를 사용하려면 어떤 이유로 그것을(가장 일반적이 필요 여러 개체에 대한 여러 큐)에 적어도 당신은 옵션입니다. 기준 고지 사항에 대해 소멸되지 않라 적용할 경우 선택하여 사용하는 방법입니다.
희망이는 데 도움이 사람과 같은 문제는 영업 이익 및 myself.
class qObj():
_q = None
o = None
def __init__(self, dQ, autoGet = False):
self._q = dQ
if autoGet == True:
self.o = self._q.get()
def __enter__(self):
if self.o == None:
self.o = self._q.get()
return self.o
else:
return self.o
def __exit__(self, type, value, traceback):
if self.o != None:
self._q.put(self.o)
self.o = None
def __del__(self):
if self.o != None:
self._q.put(self.o)
self.o = None
if __name__ == "__main__":
import Queue
def testObj(Q):
someObj = qObj(Q, True)
print 'Inside func: {0}'.format(someObj.o)
aQ = Queue.Queue()
aQ.put("yam")
with qObj(aQ) as obj:
print "Inside with: {0}".format(obj)
print 'Outside with: {0}'.format(aQ.get())
aQ.put("sam")
testObj(aQ)
print 'Outside func: {0}'.format(aQ.get())
'''
Expected Output:
Inside with: yam
Outside with: yam
Inside func: sam
Outside func: sam
'''