当前位置: 首页 > news >正文

Python 通过threading模块实现多线程

视频版教程 Python3零基础7天入门实战视频教程

我们可以使用threading模块的Thread类的构造器来创建线程

def _ init _(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None):

上面的构造器涉及如下几个参数。

  • group:指定该线程所属的线程组。目前该参数还未实现,因此它只能设为None。

  • target:指定该线程要调度的目标方法。

  • name:线程名称,一般不用设置

  • args:指定一个元组,以位置参数的形式为 target 指定的函数传入参数。元组的第一个元素传给target函数的第一个参数,元组的第二个元素传给target函数的第二个参数……依此类推。

  • kwargs:指定一个字典,以关键字参数的形式为target 指定的函数传入参数。

  • daemon:指定所构建的线程是否为后代线程。

我们看下实例:

import timedef wishing():while True:print("洗菜菜...啦啦啦")time.sleep(1)def cooking():while True:print("烧饭,烧菜...啦啦啦")time.sleep(1)if __name__ == '__main__':wishing()cooking()

运行输出的,一直是洗菜。

如果我们不用多线程,无法实现两个任务一起执行。

我们使用多线程实现代码:

import threading
import timedef wishing():while True:print("洗菜菜...啦啦啦")time.sleep(1)def cooking():while True:print("煮饭,烧菜...啦啦啦")time.sleep(1)if __name__ == '__main__':# 创建洗菜线程wishing_thread = threading.Thread(target=wishing)# 创建煮饭,烧菜线程cooking_thread = threading.Thread(target=cooking)# 启动线程wishing_thread.start()cooking_thread.start()

传参:

import threading
import timedef wishing(msg):while True:print(msg)time.sleep(1)def cooking(msg):while True:print(msg)time.sleep(1)if __name__ == '__main__':# 创建洗菜线程wishing_thread = threading.Thread(target=wishing, args=("洗菜菜...啦啦啦",))# 创建煮饭,烧菜线程cooking_thread = threading.Thread(target=cooking, kwargs={"msg": "煮饭,烧菜...啦啦啦"})# 启动线程wishing_thread.start()cooking_thread.start()
http://www.lryc.cn/news/169000.html

相关文章:

  • 用一个RecyclerView实现二级评论
  • 音视频 SDL简介
  • 7.前端·新建子模块与开发(自动生成)
  • Linux 创建目录
  • 【DIY小记】修复Win10启动出现蓝屏0xc0000185错误的一些方法
  • Linux 下的 10 个 PDF 软件
  • 浅谈redis分布式锁
  • 【Python保姆级教程】List容器
  • 微服务保护-授权规则
  • v-if失效原因
  • Chrome 基于 Wappalyzer 查看网站所用的前端技术栈
  • python的装饰器
  • P2P协议的传输艺术
  • 辅助驾驶功能开发-功能规范篇(21)-4-XP行泊一体方案功能规范
  • 家政服务小程序上门服务小程序预约上门服务维修保洁上门服务在线派单技师入口
  • LeetCode精选100题-【3数之和】-2
  • springboot集成mybatis-plus
  • 再想一想GPT
  • Blazor前后端框架Known-V1.2.15
  • Tomcat 的部署和优化
  • 后端中间件安装与启动(Redis、Nginx、Nacos、Kafka)
  • 【电子元件】常用电子元器件的识别之电阻器
  • 指针和数组笔试题讲解(2)
  • MapReduce YARN 的部署
  • vue 引入zTree
  • 链队列的基本操作(带头结点,不带头结点)
  • 深入学习 Redis Cluster - 基于 Docker、DockerCompose 搭建 Redis 集群,处理故障、扩容方案
  • C现代方法(第3、4章)笔记
  • R语言绘制染色体变异位置分布图,RIdeogram包
  • Vue知识系列(7)每天10个小知识点