一个参数的情况 加逗号!!!!!!!!!!!(格式要求)

在只有一个参数要传时 需要写成列表/元组的形式:

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)

多线程内部调用不了外部的变量,除非全局变量

(但是有时候,不知道啥情况,外面的也能用)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐