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