cx_Oracle、発電機、Pythonのスレッド
-
22-09-2019 - |
質問
このcx_Oracleカーソルを接続オブジェクトが使用されていますの異なるスレッド?はどのように発電機の影響本的に振る舞えるのでしょうか?具体的には...
編集:元の例では機能不正;発電機れによって返されるサブ機能 yield
使い分けなどが行われておらず直接のループを実行します。ことを明確にしき finally
実行後 return
なもお答えできませんのでるかどうかにカーソルを使用できる場合は別のスレッド開始のconnectionオブジェクトのカーソルを作成します。そして実際にいるようにpython2.4以上), try...finally
と yield
原因は構文エラーになります。
def Get()
conn = pool.get()
try:
cursor = conn.cursor()
cursor.execute("select * from table ...")
return IterRows(cursor)
finally:
pool.put(conn)
def IterRows(cursor):
for r in cursor:
yield r
Get()
ですから呼び出される関数を複数のスレッド)。の接続が作成され threaded=False
引数です。
った...
- レース1
cursor
オブジェクトも使用可能の場合スレッドの2がやって来て、同じ接続オブジェクト?ない場合には、何が起こるのか。
の挙動を見かけは例外cx_Oracle話プロトコルエラー、そしてsegfaultおります。