python pool.apply_async调用 参数为dataset的函数 不执行问题解决
python pool.apply_async调用 参数为dataset的函数 不执行问题解决一个参数的情况 加逗号!!!!!!!!!!!(格式要求)参数通过kwargs (dict)传输通过 args 传递 位置参数(数组或元组,只有一个元素时加 ‘,’逗号)拆分数据集使用apply_async多进程调用相关函数一个参数的情况 加逗号!!!!!!!!!!!(格式要求)在只有一个参数要传时 需要写
python pool.apply_async调用 参数为dataset的函数 不执行问题解决
一个参数的情况 加逗号!!!!!!!!!!!(格式要求)
在只有一个参数要传时 需要写成列表/元组的形式:
task_fun.apply_async(args=[value1, ]) # 需要加上逗号!
task_fun.apply_async(args=(value1, )) # 需要加上逗号!
参数通过kwargs (dict)传输
task_fun 是需要执行任务的方法,参数自定义, 通过 kwargs 将task_fun(key1, key2) 方法需要的 key1 key2 参数通过 关键字参数 传过去:
task_fun.apply_async(kwargs={‘key1’: value1, ‘key2’: value2})
通过 args 传递 位置参数(数组或元组,只有一个元素时加 ‘,’逗号)
task_fun.apply_async(args=[value1, value2])
拆分数据集使用apply_async多进程调用相关函数
from multiprocessing import Pool
pool = Pool(processes=10)
limit_num = config.get(“rules”,“Convert_limitnum”)
num = int(row_num/int(limit_num))+1
for i in range(0, num):
save_data = data.iloc[i*int(limit_num):(i+1)*int(limit_num), :] #每隔1万循环一次
pool.apply_async(func=exe_insert, args=(save_data,))
# exe_insert(save_data)
pool.close()
pool.join()
multiprocessing 中的 Queue 不能被序列化。
https://stackoverflow.com/questions/45178447/multiprocessing-queue-as-arg-to-pool-worker-aborts-execution-of-worker?rq=1
multiprocessing.Queue作为arg池工作程序的中止工作程序的执行.
多线程错误打印-error_callback
# 多线程错误打印
def print_error(value):
print("线程池出错,出错原因为: ", value)
pool.apply_async(func=audit, args=(error_code, error_type_id, rule_id, batch_num, task_id), error_callback=print_error)
多线程内部调用不了外部的变量,除非全局变量
(但是有时候,不知道啥情况,外面的也能用)
更多推荐
所有评论(0)