我有以下代码:
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
访问数据库,这导致数据库端出现一些问题。
如何更改上述代码,以便一次只能访问数据库。一个处理器完成数据库访问的时刻,另一个处理器可以再次自由访问数据库。已完成数据库访问的处理器应继续进行数学运算。基本上,我试图确保数据库访问不是同时的,但数据库访问代码保持在多处理框架内。作为最后的手段,我可以尝试在处理数据之前读取数据,但我想看看是否可以在不更改现有代码的情况下执行此操作。
答案 0 :(得分:1)
使用(N, 3)
int mortgageTerm;
cout << "Mortgage term (1 - 40 years) : ";
while (!(cin >> mortgageTerm) ||
mortageTerm < 1 ||
mortgageTerm > 40 )
{
cout << "That's not a valid choice! Try again : ";
cin.clear();
cin.ignore(std::numeric_limits<streamsize>::max(), '\n');
}
// If you are concerned about extra input after the number and want to clear the input stream
// cin.ignore(std::numeric_limits<streamsize>::max(), '\n');