1
我有以下代碼:在python引入延遲多處理
from multiprocessing import Pool
import pandas as pd
def f(x):
data = pd.read_sql(query[x], conn) #query and conn are particular to my PC so no point in pasting it here
#do large math operations here
return answer
if __name__ == '__main__':
p = Pool(5)
print(p.map(f, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))
我有我的電腦上8個處理器。現在所有處理器同時通過conn
訪問數據庫,這在數據庫端造成了一些問題。
如何更改上述代碼,以便一次只能訪問一個數據庫。當一個處理器訪問數據庫時,另一個處理器可以再次訪問數據庫。已經完成數據庫訪問的處理器應該繼續進行數學運算。基本上,我試圖確保數據庫訪問不是同時進行,但數據庫訪問代碼保留在多處理框架內。作爲最後的手段,我可以在處理它們之前嘗試讀取這些數據,但我正在查看是否可以在不更改現有代碼的情況下執行此操作。
如果你想這樣做一次一個,然後去除多整點。而是讓每個進程都建立自己的連接。 – Vallentin