1. 进程执行带有参数的任务的介绍
前面我们使用进程执行的任务是没有参数的,假如我们使用进程执行的任务带有参数,如何给函数传参呢?
Process类执行任务并给任务传参数有两种方式:
- args 表示以元组的方式给执行任务传参
- kwargs 表示以字典方式给执行任务传参
2. args参数的使用
示例代码:
import multiprocessing
import time
# 带有参数的任务
def task(count):
for i in range(count):
print("任务执行中..")
time.sleep(0.2)
else:
print("任务执行完成")
if __name__ == '__main__':
# 创建子进程
# args: 以元组的方式给任务传入参数
sub_process = multiprocessing.Process(target=task, args=(5,))
sub_process.start()
# 执行结果:
# 任务执行中..
# 任务执行中..
# 任务执行中..
# 任务执行中..
# 任务执行中..
# 任务执行完成
3. kwargs参数的使用
示例代码:
import multiprocessing
import time
# 带有参数的任务
def task(count):
for i in range(count):
print("任务执行中..")
time.sleep(0.2)
else:
print("任务执行完成")
if __name__ == '__main__':
# 创建子进程
# kwargs: 表示以字典方式传入参数
sub_process = multiprocessing.Process(target=task, kwargs={"count": 3})
sub_process.start()
# 执行结果:
# 任务执行中..
# 任务执行中..
# 任务执行中..
# 任务执行完成
4. 小结
进程执行任务并传参有两种方式:
- 元组方式传参(args): 元组方式传参一定要和参数的顺序保持一致。
- 字典方式传参(kwargs): 字典方式传参字典中的key一定要和参数名保持一致。
传参代码
import multiprocessing
# 显示信息的任务
def show_info(name, age):
print(name, age)
# 创建子进程
# 以元组方式传参,元组里面的元素顺序要和函数的参数顺序保持一致
# sub_process = multiprocessing.Process(target=show_info, args=("李四", 20))
# # 启动进程
# sub_process.start()
# 以字典方式传参,字典里面的key要和函数里面的参数名保持一致,没有顺序要求
# sub_process = multiprocessing.Process(target=show_info, kwargs={"age":20, "name": '王五'})
# # 启动进程
# sub_process.start()
sub_process = multiprocessing.Process(target=show_info, args=("冯七",), kwargs={"age": 20})
# 启动进程
sub_process.start()
# 打印结果
# 冯七 20