我有一个很长的 multiprocessing python code
其中涉及到与 Oracle database
在运行过程中多次。这段代码应该是一个独立的应用程序,它将24*7运行,并从db中获取数据,使用多处理执行,将结果写回db,然后再次轮询数据库以获取新的数据,并不断重复这个循环。 connection pool (or session pool
我不知道这两者之间的区别,新的python和编码),以提高代码的性能?需要连接到Oracle数据库使用 cx_oracle
.任何帮助将被感激。非常感谢!!
如何创建一个连接池(或会话池,我不知道这2个池子的区别,python和编码方面的新手)来提高代码的性能?
每个连接池中的 cx_Oracle connection pool
相当于一个 Oracle session
.
当应用程序频繁连接和断开数据库时。连接池 会提升性能。cx_Oracle
连接池允许应用程序创建和维护一个连接到数据库的池。池子的创建是通过 cx_Oracle.SessionPool()
然后 SessionPool.acquire()
可以被调用以从池中获取连接。初始池大小和最大池大小是在创建池时提供的。当池需要增长时,会自动创建新的连接。当连接不再使用时,池可以缩回最小尺寸。从池中获取的连接应使用以下方法释放回池中。SessionPool.release()
或 Connection.close()
当它们不再被需要时,就会被释放。否则,当所有引用连接的变量退出作用域时,它们将被自动释放回池中。会话池可以使用 SessionPool.close()
.
下面的例子展示了如何使用连接池连接到Oracle数据库。
# Create the session pool
pool = cx_Oracle.SessionPool("hr", userpwd,
"dbhost.example.com/orclpdb1", min=2, max=5, increment=1, encoding="UTF-8")
# Acquire a connection from the pool
connection = pool.acquire()
# Use the pooled connection
cursor = connection.cursor()
for result in cursor.execute("select * from mytab"):
print(result)
# Release the connection to the pool
pool.release(connection)
# Close the pool
pool.close()
阅读更多关于 连接池.