Python Mutiprocessing.pool传递一行touple

时间:2018-08-17 01:15:42

标签: python multiprocessing pool

我下面有一个代码,该代码进行mysql调用以获得我需要请求的报告列表。然后,它调用另一个函数“ call_report”以请求报告。 call_report函数的CPU不足,并且大多数情况下等待报告返回。我想同时运行for循环的多个实例,但无法弄清楚如何实现在report_to_run中的行上进行迭代的池。

cursor.execute("SELECT * FROM tbl_rpt_log")
reports_to_run = cursor.fetchall() 

for row in reports_to_run :
    user=(row[0])
    report=(row[1])
    run_interval=(row[3])

   call_report(report, user)    

1 个答案:

答案 0 :(得分:1)

使用Pool的一般技巧是创建一个包装器函数,该包装器函数根据需要获取输入,将其转换为实际函数所需的输入,然后调用它。像这样:

def report_on_row(row):
    user = row[0]
    report = row[1]
    run_internal= row[3]
    return call_report(report, user)

现在,您可以使用map在每一行上调用此包装器函数:

pool.map(report_on_row, reports_to_run)