다음 코드를 끊고 있지만, 오라클 인스턴트 클라이언트 11g를 사용하는 경우 끊고, pool.release (코네티컷 주)에cx_Oracle과 + 오라클 인스턴스 클라이언트 11g 인스턴트 클라이언트 10g와 올바른 작동
import time
print '---------------------------------'
import cx_Oracle
print cx_Oracle.clientversion()
time.sleep(1)
pool = cx_Oracle.SessionPool('login', 'pass', "dbserver:1521/db", 1, 6, 2)
pool.timeout = 60
con11 = pool.acquire()
con12 = pool.acquire()
con13 = pool.acquire()
con14 = pool.acquire()
con15 = pool.acquire()
pool.release(con11)
pool.release(con12)
pool.release(con13)
pool.release(con14)
pool.release(con15)
for i in xrange(100000):
print '-=-' + str(i) + '-=-'
print str(pool.opened) + " " + str(pool.busy)
con1 = pool.acquire()
cursor = con1.cursor()
cursor.execute("SELECT * FROM DUAL")
count = cursor.fetchall()[0][0]
cursor.close()
print str(pool.opened) + " " + str(pool.busy)
con2 = pool.acquire()
cursor = con2.cursor()
cursor.execute("SELECT * FROM DUAL")
count = cursor.fetchall()[0][0]
cursor.close()
print str(pool.opened) + " " + str(pool.busy)
con3 = pool.acquire()
cursor = con3.cursor()
cursor.execute("SELECT * FROM DUAL")
count = cursor.fetchall()[0][0]
cursor.close()
print str(pool.opened) + " " + str(pool.busy)
t1 = time.time()
pool.release(con3)
t2 = time.time()
print t2 - t1
print str(pool.opened) + " " + str(pool.busy)
t1 = time.time()
pool.release(con2)
t2 = time.time()
print t2 - t1
t1 = time.time()
pool.release(con1)
t2 = time.time()
print t2 - t1
print str(pool.opened) + " " + str(pool.busy)
print '---------------------------------'
PS를 중단 : 내가 가지고 cx_Oracle과 소스 코드에 보면, 그것은 라인
status = OCISessionRelease(connection->handle,
connection->environment->errorHandle, NULL, 0, mode);
모든 아이디어를 어떻게 해결하는 방법에 seesionpool.c에 손을입니까?
PPS : OS Windows XP 및 2008R2