python 多线程

python 多线程

多线程流程

  1. 导入模块
   import threading
  1. 通过线程类型创建线程对象
   线程对象 = threading.Thread(target = '待执行函数',name = (线程命名))
  1. 启动线程执行任务
   线程对象.start()

启动线程

创建子线程

sing_thread = threading.Thread(target = sing)
dance_thread = threading.Thread(target = dance)

启动子线程

sing_thread.start()
dance_thread.start()

线程传参

  • args 以元组方式传递
target 线程函数名
args 以元组的方式传递参数  args只有一个参数的时候,一定在后面加上',' !!!
sing_thread = threading.Thread(target = sing,args = (3,))
sing_thread.start()
  • kwargs 以字典方式传递
target 线程函数名
kwargs 以字典的方式传递参数
dance_thread = threading.Thread(target = dance,kwargs = {'count': 3})
dance_thread.start()

例:

import threading,time

def sing(num):
    for i in range(num):
        print('sing')
        time.sleep(1)
def dance(num):
    for i in range(num):
        print('dance')
        time.sleep(1)
if __name__ == '__main__':
    sing_thread = threading.Thread(target= sing ,args= (3,))
    dance_thread = threading.Thread(target = dance,kwargs= {'num': 5})

    sing_thread.start()
    dance_thread.start()

主线程和子线程的结束顺序

  • 默认主线程等待子线程结束

设置主线程结束子线程销毁

  • thread 添加 daemon = True
  • 或者在启动线程前添加sing_thread.setDaemon(Ture)
sing_thread.Thread(target = sing ,daemon = Ture)

线程之间的执行顺序

  • 默认无序

证实线程之间是无序的

通过current_thread方法获取线程对象
current_thread = threading.current_thread()
通过current_thread对象可以知道相关信息,例如被创建的顺序
print('current_thread')
import threading,time

def sing():
        time.sleep(2)
        print(threading.current_thread())

if __name__ == '__main__':
    for i in range(5):
        sing_thread = threading.Thread(target=sing)
        sing_thread.start()

Original: https://www.cnblogs.com/luckywhat/p/14292739.html
Author: luckywhat
Title: python 多线程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/606932/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 软件工程 结构法方法 第2篇随笔

    建立系统的功能模型图 首先:建立系统环境图,确定系统边界 其中: 数据流为:销售的商品,日销售额等;三个输入流,三个输出流 ​ 数据源为:营业员,经理,收款员 ​ 数据潭为:经理,…

    Linux 2023年6月7日
    0101
  • 关于如何在window下执行SQLSERVER的定时备份

    引言 在使用SqlServer Express 版本的时候发现,这个版本不支持通过数据库的代理方式进行数据库的维护。 解决方案 使用SQL语句加windows任务计划的方式解决具体…

    Linux 2023年6月14日
    092
  • MySQL——索引结构

    索引:用于快速查找数据。 索引是将数据的一些关键信息通过特定的数据结构存储到一片新的空间中,这样在文件查找的时候能快速找到。 mysql索引类型: B+TREE、HASH、R-TR…

    Linux 2023年6月7日
    0109
  • Golang 实现 Redis(7): 集群与一致性 Hash

    本文是使用 golang 实现 redis 系列的第七篇, 将介绍如何将单点的缓存服务器扩展为分布式缓存。godis 集群的源码在Github:Godis/cluster 单台服务…

    Linux 2023年5月28日
    098
  • 如何分析redis中的慢查询

    慢查询只记录命令执行时间,并不包括命令排队和网络传输时间。因此客户端执行命令的时间会大于命令实际执行时间。因为命令执行排队机制,慢查询会导致其他命令级联阻塞,因此当客户端出现请求超…

    Linux 2023年5月28日
    091
  • 【设计模式】Java设计模式-单例模式

    【设计模式】Java设计模式 – 单例模式 😄 不断学习才是王道🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🌝分享学习心得,欢迎指正,大家一起学习…

    Linux 2023年6月6日
    0155
  • 【XML】学习笔记第三章-namesapce

    命名空间概述 标记中出现了同名不同义的情况,极其容易造成含义混乱。命名空间就是由W3C制定的用于解决这类问题的。 【命名空间的作用】出现标记同名不同义情况时,避免含义混乱 XML技…

    Linux 2023年6月14日
    082
  • Linux

    ​ 大型企业高并发的 Java 应用程序都是部署在大型服务器之上的,而服务器的操作系统一般是使用高性能的 Linux(或Unix)的操作系统,不是 Windows 操作系统,所以编…

    Linux 2023年5月27日
    0157
  • Ajax 技术(四)

    目的: 熟练掌握AJAX基础和XMLHttpRequest对象及其方法。 重点掌握AJAX发送请求的具体过程,及过程中的不同状态。 要求: 实现用户注册表单中,使用AJAX技术根据…

    Linux 2023年6月13日
    0106
  • laravel源码分析-队列Queue

    队列 (Queue) 是 laravel 中比较常用的一个功能,队列的目的是将耗时的任务延时处理,比如发送邮件,从而大幅度缩短 Web 请求和响应的时间。本文我们就来分析下队列创建…

    Linux 2023年6月7日
    075
  • 07_Linux基础-计划任务-备份脚本-变量定义和使用

    07_Linux基础-计划任务-备份脚本-变量定义和使用 一. 计划任务 主要内容:周期性的计划任务crontab/var/spool/cron/ 统一存放计划任务的目录/var/…

    Linux 2023年6月6日
    087
  • Windows批处理一键添加hosts文件

    批处理一键添加hosts文件 此脚本主要用于安装一些学习软件时需屏弊一些网站,双击一键修改。 @echo off echo 获取Administrator权限 cacls.exe …

    Linux 2023年6月8日
    099
  • Scrapy关键词 爬虫的简单实现(以新华网和人民网为例)

    新华网爬虫(2022年6月) 1 分析网站结构 新华网网址:新华网_让新闻离你更近 (news.cn) 新华网的首页是带有关键词搜索功能的,我们尝试在搜索栏随意搜索一个关键词 可以…

    Linux 2023年6月7日
    0112
  • centos系统和Ubuntu系统命令区别以及常见操作

    一.前言 二.系统环境 三.命令区别 3.1 使用习惯和命令区别 3.2 服务管理的区别 3.3 软件包信息区别 四.Ubuntu系统常见操作 4.1 Ubuntu系统apt和ap…

    Linux 2023年6月7日
    0230
  • 职场最讨厌的人,没有之一

    人物背景: 姓名:春绿,性别:未知,年龄:不详,工龄:菜鸟,人物特点:爱管闲事,管不住自己的嘴,情商约等于0.000001 人物故事: 1、领导给小明安排了一个工作,被春绿听到了,…

    Linux 2023年6月13日
    0103
  • 轻量级多级菜单控制框架程序(C语言)

    1、前言 作为嵌入式软件开发,可能经常会使用命令行或者显示屏等设备实现人机交互的功能,功能中通常情况都包含 UI 菜单设计;很多开发人员都会有自己的菜单框架模块,防止重复造轮子,网…

    Linux 2023年6月7日
    0118
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球