1.什么是进程和线程。

1.1 进程的概念

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础,每个进程都有自己的地址空间、内存、数据栈及其它记录其运行轨迹的辅助数据。

1.2 线程的概念

线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。

1.3 线程和进程的关系。

进程和线程的关系:

  • 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。

  • 资源分配给进程,同一进程的所有线程共享该进程的所有资源。

  • 处理机分给线程,即真正在处理机上运行的是线程

  • 线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。线程是指进程内的一个执行单元,也是进程内的可调度实体.

进程与线程的区别:

  • 调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位

  • 并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行

  • 拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.

  • 系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

2. Python中多线程的概念

        前面解释了线程和进程分别是什么,并且有哪些区别主要作为概念了解下。

2.1 多线程

        多线程就是允许一个进程内存在多个控制权,以便让多个函数同时处于激活状态,从而让多个函数的操作同时运行,理论上多线程相当于一个并发(concunrrency)系统。并发系统一般同时执行多个任务。多个任务可以实现共享资源。

但是在并发情况下,指令执行的先后顺序由内核决定。同一个线程内部,指令按照先后顺序执行,但不同线程之间的指令很难说清除哪一个会先执行。因此要考虑多线程同步的问题。同步(synchronization)是指在一定的时间内只允许某一个线程访问某个资源。

2.2 python多线程的作用,原理,缺陷

作用:提高程序执行速度

原理:多线程能够提高执行速度的原因是什么?假如一个程序包含多个子任务,这些任务相互独立,没有因果关系。

a.单线程情况下,执行过程中,某个子任务在等待I/O,然而I/O到来的时间不确定,cpu时间耗在毫无意义的等待上,程序执行时     间也将加上这一段等待的时间。

b.多线程情况下,若某个子任务等待I/O,可切换出其他线程执行,等到合适的时机(I/O到达)再切换回该线程,避免了cpu无意义     的等待,也降低了程序的执行时间。

缺陷:由于GIL的存在,python多线程中只能有一个线程会被执行,无论你启多少个线程,你有多少个cpu, Python在执行的时候            会淡定的在同一时刻只允许一个线程运行。(由于切换的速度比较快看起来像并发原理,实际并不是一种并发)。

3.如何开启多线程

3.1如何启用线程

      python多线程模块threading。

3.1.1 定义函数来开启多线程

import threading
import timedef func(name):print("hello", name)time.sleep(3)t1 = threading.Thread(target=func,args=("ycw",))
t2 = threading.Thread(target=func,args=("sjy",))t1.start()      # 并发
t2.start()      # 并发# func("ycw")    # 先执行
# func("sjy")   # 再执行

3.1.2 定义类方法来开启多线程

#! /usr/bin/env python3
# -*- coding:utf-8 -*-import threading
import time# tread类方法调用
class MyTread(threading.Thread):def __init__(self,name):super(MyTread,self).__init__()self.name = namedef run(self):print("hello",self.name)time.sleep(3)t1 = MyTread("ycww")
t2 = MyTread("sjyy")t1.start()      # 并发
t2.start()      # 并发

以上就是开启多线程的两种方法。

python中的线程和进程。相关推荐

  1. 解析Python中的线程与进程

    1 基础知识 现在的 PC 都是多核的,使用多线程能充分利用 CPU 来提供程序的执行效率. 1.1 线程 线程是一个基本的 CPU 执行单元.它必须依托于进程存活.一个线程是一个execution ...

  2. Python中的线程、进程、协程以及区别

    进程,是执行中的计算机程序.也就是说,每个代码在执行的时候,首先本身即是一个进程.一个进程具有:就绪,运行,中断,僵死,结束等状态(不同操作系统不一样). 运行中每个进程都拥有自己的地址空间.内存.数 ...

  3. python停止线程池_详解python中Threadpool线程池任务终止示例代码

    需求 加入我们需要处理一串个位数(0~9),奇数时需要循环打印它:偶数则等待对应时长并完成所有任务:0则是错误,但不需要终止任务,可以自定义一些处理. 关键点 定义func函数处理需求 callbac ...

  4. python脚本自动运行失败_解决Python中定时任务线程无法自动退出的问题

    python的线程有一个类叫Timer可以,用来创建定时任务,但是它的问题是只能运行一次,如果要重复执行,则只能在任务中再调用一次timer,但这样就存在新的问题了,就是在主进程退出后,不能正常退出子 ...

  5. Python中的线程间通信

    Python中的线程间通信 文章目录 Python中的线程间通信 1.Queue 2.同步机制 1.Event 2.Semaphore(信号量) 3.Lock(锁) 4.RLock(可重入锁) 5.C ...

  6. python threading timer 退出_解决Python中定时任务线程无法自动退出的问题

    python的线程有一个类叫Timer可以,用来创建定时任务,但是它的问题是只能运行一次,如果要重复执行,则只能在任务中再调用一次timer,但这样就存在新的问题了,就是在主进程退出后,不能正常退出子 ...

  7. python之路--线程和进程

    线程 python中有关线程的有两个模块比较常用 分别是thread和threading. 首先说为什么要用线程呢.正如那句话吃着火锅听着歌. 像之前写的python程序,程序执行,每时刻只有一个任务 ...

  8. python中的线程技术

    #!/user/bin/env python # @Time :2018/7/7 11:42 # @Author :PGIDYSQ #@File :DaemonTest.py import threa ...

  9. python协程和线程区别_python中的线程和协程之间有什么区别

    一.首先我们来了解一下线程和协程的概念1.线程线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源( ...

最新文章

  1. 实验吧--web--天下武功唯快不破
  2. 跨域、ContentType组件
  3. MFC模块状态(一)
  4. 东方通 启动服务访问不到_使用金万维宽带通动态域名服务实现速达3000异地访问...
  5. 必背单词_考研英语语法如何高效自学? 真题必背单词Day12
  6. activemq部署
  7. 基于词嵌入技术的微博博文情感分析系统设计实现
  8. Memory for crash kernel (0x0 to 0x0) notwithin permissible range
  9. 西瓜直播怎么录屏游戏
  10. logo语言是计算机语言吗,LOGO语言的编程
  11. mongo分片集群部署
  12. 洛谷 P2142 高精度减法
  13. 燃气管道运行全局实时监控系统-海城支线总页面
  14. RN8215芯片 32768Hz晶体停振案例分析
  15. 云-阿里云-百科:阿里云
  16. Java实现二阶魔方旋转
  17. 咸鱼前端—html初识
  18. 3D游戏建模师职业现状:大学生毕业就是失业,真的这么可怕吗
  19. ubuntu设置网卡默认启动_ubuntu 网络配置
  20. uoj265【2016提高】愤怒的小鸟(状压dp)

热门文章

  1. 艺赛旗RPA 网页处理系列(四):网页表格中获取数据,并点击相应记录后的按钮操作说明总结
  2. vulnhub靶场——Hacker-Kid-v1-0-1
  3. C#二维码条码生成存入文本加缓存
  4. SAP中SY-SUBRC 的含义
  5. 同花顺概念板块成分股数据分享
  6. 整套智能家居系统解决方案
  7. python框架之Scrapy自动存储mysql数据库
  8. 聊聊华为,不得不说华为确实很牛逼
  9. Linux运维微信群,新闻|Linux 中国官方微信群开放加入
  10. c语言修炼内功,助你升级打怪!!