带有参数的任务线程

前面我们使用线程执行的任务是没有参数的,假如我们使用线程执行的任务带有参数,如何给函数传参呢?

Thread类执行任务并给任务传参数有两种方式:

  • args 表示以元组的方式给执行任务传参
  • kwargs表示以字典方式给执行任务传参

    args元组参数

示例代码:

  1. import threading
  2. import time
  3. # 带有参数的任务
  4. def task(count):
  5. for i in range(count):
  6. print("任务执行中..")
  7. time.sleep(0.2)
  8. else:
  9. print("任务执行完成")
  10. if __name__ == '__main__':
  11. # 创建子线程
  12. # args: 以元组的方式给任务传入参数
  13. sub_thread = threading.Thread(target=task, args=(5,))
  14. sub_thread.start()

执行结果:

  1. 任务执行中..
  2. 任务执行中..
  3. 任务执行中..
  4. 任务执行中..
  5. 任务执行中..
  6. 任务执行完成

kwargs字典参数

示例代码:

  1. import threading
  2. import time
  3. # 带有参数的任务
  4. def task(count):
  5. for i in range(count):
  6. print("任务执行中..")
  7. time.sleep(0.2)
  8. else:
  9. print("任务执行完成")
  10. if __name__ == '__main__':
  11. # 创建子线程
  12. # kwargs: 表示以字典方式传入参数
  13. sub_thread = threading.Thread(target=task, kwargs={"count": 3})
  14. sub_thread.start()

执行结果:

  1. 任务执行中..
  2. 任务执行中..
  3. 任务执行中..
  4. 任务执行完成

小结

  • 线程执行任务并传参有两种方式:
  • 元组方式传参(args) :元组方式传参一定要和参数的顺序保持一致。
  • 字典方式传参(kwargs):字典方式传参字典中的key一定要和参数名保持一致。