我有这样的字典:
{
"ABC": {
"Name": "ABC",
"dates": {
"2019-12-13": [
{
"Status": "P"
},
{
"Status": "A"
}
],
"2019-12-14": [
{
"Status": "P"
},
{
"Status": "A"
}
]
}
}
}
我正在这样迭代:
for key, value in result.items()
for dkey, dvalue in value['dates'].items()
process(key,value,dkey,dvalue)
def process(key, value, dkey, dvalue):
##Processing
##Insert into db process data
我们可以迭代该命令吗?并行以获得更好的性能?
您可以使用multiprocessing.Pool.map()
,因此对值并行运行该方法,可以使用1个参数(更容易),所以只需tuple
个值
def process(values):
key, value, dkey, dvalue = values
# do your stuff
if __name__ == '__main__':
todos = [(key, value, dkey, dvalue)
for key, value in result.items()
for dkey, dvalue in value['dates'].items()] # all the tuples
cpu_percent = 0.5 # the number of processors to use = the number of thread
with mp.Pool(int(mp.cpu_count() * cpu_percent)) as q:
q.map(process, todos)
但是您的意思是[[插入数据库]]我建议运行一些查询,但是要插入多个元组,10个100个值的插入查询比1000个插入查询要好;)