目录

一.进程、线程和并行执行

1.什么是进程、线程

注意

2.什么是并行执行

二.python的多线程编程

threading模块

语法

多线程编程的传参

演示

三.总结


一.进程、线程和并行执行

1.什么是进程、线程

现代操作系统比如Mac OS X,UNIX, Linux, Windows等,都是支持“多任务”的操作系统。
进程:就是一个程序,运行在系统之上,那么便称之这个程序为一个运行进程,并分配进程ID方便系统管理。线程:线程是归属于进程的,一个进程可以开启多个线程,执行不同的工作,是进程的实际工作最小单位。

进程就好比一家公司,是操作系统对程序进行运行管理的单位
线程就好比公司的员工,进程可以有多个线程(员工),是进程实际的工作者
操作系统中可以运行多个进程,即多任务运行
一个进程内可以运行多个线程,即多线程运行

注意

进程之间是内存隔离的,即不同的进程拥有各自的内存空间。这就类似于不同的公司拥有不同的办公场所。
线程之间是内存共享的,线程是属于进程的,一个进程内的多个线程之间是共享这个进程所拥有的内存空间的。这就好比,公司员工之间是共享公司的办公场所。

2.什么是并行执行

并行执行的意思指的是同一时间做不同的工作。
进程之间就是并行执行的,操作系统可以同时运行好多程序,这些程序都是在并行执行。

除了进程外,线程其实也是可以并行执行的。
也就是比如一个Python程序,其实是完全可以做到:

  • 一个线程在输出:你好
  • 一个线程在输出:Hello

像这样一个程序在同一时间做两件乃至多件不同的事情,我们就称之为:多线程并行执行

二.python的多线程编程

threading模块

绝大多数编程语言,都允许多线程编程,Pyhton也不例外。Python的多线程可以通过threading模块来实现。

语法

演示

import timedef dence():while True:print("我在跳舞!")time.sleep(1)def sing():while True:print("我在唱歌,啦啦啦")time.sleep(1)dence()
sing()

如上图,当直接调用时,sing函数一直没有执行,因为此时程序是单线程

import time
import threading
def dence():while True:print("我在跳舞!")time.sleep(1) def sing():while True:print("我在唱歌,啦啦啦")time.sleep(1)
#创建跳舞和唱歌两个线程
dance_thread=threading.Thread(target=dence)
sing_thread=threading.Thread(target=sing)
#让线程干活
dance_thread.start()
sing_thread.start()

结果是

多线程编程的传参

需要传参的话可以通过:

  1. args参数通过元组(按参数顺序)的方式传参,元组内只有一个时,最后要有逗号
  2. 或使用kwargs参数用字典的形式传参

演示

import time
import threading
def dence(msg):while True:print(msg)time.sleep(1)def sing(a):while True:print(a)time.sleep(1)
#创建跳舞和唱歌两个线程
dance_thread=threading.Thread(target=dence,args=("我要跳舞!",))
sing_thread=threading.Thread(target=sing,kwargs={"a":"我要唱歌"})
#让线程干活
dance_thread.start()
sing_thread.start()

结果是

三.总结

1.什么是进程
程序在操作系统内运行,即成为一个运行进程
2.什么是线程
进程内部可以有多个线程,程序的运行本质上就是由进程内部的线程在实际工作的。
3.什么是并行执行

  • 多个进程同时在运行,即不同的程序同时运行,称之为:多任务并行执行
  • 一个进程内的多个线程同时在运行,称之为:多线程并行执行

4.threading模块的使用
thread_obj = threading.Thread(target=func)创建线程对象
thread_obj.start()启动线程执行
5.如何传参

注意传参需要:

  1. args参数通过元组(按参数顺序)的方式传参,元组内只有一个时,最后要有逗号
  2. 或使用kwargs参数用字典的形式传参

进程、线程及python的多线程编程相关推荐

  1. python进阶 多线程编程 —— threading和queue库实现多线程编程

    python进阶 多线程编程 -- threading和queue库实现多线程编程) 摘要 多线程实现逻辑封装 模型参数选择实例 摘要 本文主要介绍了利用python的 threading和queue ...

  2. linux查询某域线程是否满了,Linux多线程编程的时候怎么查看一个进程中的某个线程是否存活...

    pthread_kill: 别被名字吓到,pthread_kill可不是kill,而是向线程发送signal.还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用sig ...

  3. python --- 基础多线程编程

    在python中进行多线程编程之前必须了解的问题: 1. 什么是线程? 答:线程是程序中一个单一的顺序控制流程.进程内一个相对独立的.可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程 ...

  4. 【转】使用python进行多线程编程

    1. python对多线程的支持 1)虚拟机层面 Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,暂时无法利用多处理器的优势.使 ...

  5. python 实现多线程编程

    就个人而言,学了这么多年的课程又写了这么多年的程序,虽然没有涉及到企业级的项目,但还是体会到了有几个知识点是非常重要的,包括:面向对象的思想.如何架构一个项目.设计模式来具体解决问题.应用机器学习和深 ...

  6. python之多线程编程(一):基本介绍

    Python提供了多个模块来支持多线程编程,包括thread,threading和Queue模块等.编写的程序可以使用thread和threading模块来创建与管理线程. thread模块提供了最基 ...

  7. python多核多线程编程实例_Python多线程

    多线程基础概念 并行与并发并行:同时处理多个任务,必须在多核环境下 一段时间内同时处理多个任务,单核也可以并发 并发手段线程:内核空间的调度 进程:内核空间的调度 协程:用户空间的调度 线程可以允许程 ...

  8. Python Threading 多线程编程

    写在篇前   threading模块是python多线程处理包,使用该模块可以很方便的实现多线程处理任务,本篇文章的基础是需要掌握进程.线程基本概念,对PV原语.锁等传统同步处理方法有一定的了解.另外 ...

  9. Delphi中线程类TThread实现多线程编程2---事件、临界区、Synchronize、WaitFor……

    接着上文介绍TThread. 现在开始说明 Synchronize和WaitFor 但是在介绍这两个函数之前,需要先介绍另外两个线程同步技术:事件和临界区 事件(Event) 事件(Event)与De ...

最新文章

  1. matlab里符号的写法,Matlab中特殊符号的写法
  2. python异步高并发_通过python异步通讯方式构建高并发压力测试工具
  3. angular中的MVVM模式
  4. 高级音频降噪插件:Klevgrand Brusfri for Mac
  5. Atititi atiitt eam pam资产管理 购物表去年.xlsx
  6. Firefox 将添加画中画功能
  7. AMiner推荐论文:Flexible artificial Si-In-Zn-O/ion gel synapse and its application to sensory-neuromorphi
  8. 添加遮罩css,添加遮罩层
  9. threejs 特效,自定义发光墙体,贴图动画版本。发光围栏。
  10. 第三方应用调用高德地图
  11. 又是一年金九银十!docker搭建ssr
  12. 优品优男所谓“日有所思,夜有所梦”
  13. RPA在政企行业的应用
  14. CSS3篮球场热力区域图
  15. 信号(signal,kill,raise)
  16. table行的折叠和展开
  17. 狂肝半个月-嵌入式开发学习学习路线+知识汇总
  18. 塔望 · ​食界​人物|红牛饮料背后的两个企业家
  19. PDF分割合并工具 免费,绿色软件
  20. ssm+jsp校友交流平台

热门文章

  1. 关于Android滑动scroll,弹性滑动以及VelocityTracker
  2. MapGIS IGServer开发平台学习版安装文档
  3. Jlink V9刷入自动升级固件
  4. 武汉大学计算机学院 教师名录,韩镇副教授-教师名录-国家多媒体软件工程技术研究中心...
  5. 使用SOLIDWORKS验证光线模拟
  6. ZOJ 3598 Spherical Triangle(计算几何 球面三角形内角和)
  7. python中获取职位信息
  8. 快鲸智慧楼宇:为楼宇智慧化、物联化、可视化、数字化运营赋能
  9. EPLAN教程 | EPLAN表格居然还能这么玩
  10. 赛尔102S助力云南开展2020年白马雪山国家级自然保护区低空无人机生态监测