-2
我有一個Oracle查詢將返回我約300萬行看起來是這樣的:蟒蛇 - multiprocessing.dummy池功能imporve查詢執行時間
select key from table;---just one column
我試圖讓該並聯執行在python
import threading
local = threading.local()
def execute_query:
if not hasattr(local, 'db'):
local.db = params.get('conn')
cursor = local.db.cursor()
cursor.execute(params.get('sql'))
return cursor.fetchall()
使用泳池對象從multithreading.dummy模塊,得到並行執行上述Oracle查詢我做:
def __call__(self):
pool = Pool(10)
data = pool.apply(execute_query, [{ 'conn' : self._connection, 'sql': self._sql }])
pool.close()
pool.join()
我知道pool object
的apply method
只在其中一個工作線程中執行傳遞的函數。
有沒有什麼辦法可以讓這個execute_query
在多個線程間執行以提高性能?
爲什麼做,如果你想用你使用''multithreading.dummy' multiprocessing'?重讀它:https://docs.python.org/3.6/library/multiprocessing.html#module-multiprocessing.pool – stovfl
產卵過程涉及比產卵線程更多的開銷,另外我想使用apply()和map ()方法的池對象。 multiprocessing.dummy複製多處理的API,但不過是線程模塊的一個包裝。 – abhi1489