1. 什么是线程

由于进程是资源拥有者,创建、撤消与切换存在较大的内存开销,因此需要引入轻型进程 即线程, 进程是资源分配的最小单位,线程是CPU调度的最小单位(程序真正执行的时候调用的是线程)。每一个进程中至少有一个线程。

2. 进程与线程的关系

举个栗子:一个屋子里有很多人,那么这个屋子就相当于一个进程,里面的每一个人就相当于一个线程。但进程不只是包含线程,还包含其他资源,数据库等。进程是资源的集合。

3. 进程与线程的区别和联系

运行方式不同:

进程不能单独执行,它只是资源的集合。进程要操作CPU,必须要先创建一个线程,所有在同一进程中的线程,是同享同一块进程所占的内存控件。

联系:

进程中第一个线程是主线程,主线程可以创建其他线程,其他线程也可以创建主线程,线程之间是平等的。

线程的实例方法:(了解即可)

 - getName(): 获取线程的名称。 - setName(): 设置线程的名称。 - isAlive(): 判断当前线程存活状态。

4. run方法的继承:

代码演示:

#父类
class A:def __init__(self):print("父类init被触发")def run(self):print("父类的run方法被调用")#子类
class B(A):def run(self):print("子类的run方法被调用")
if __name__ == '__main__':b=B()b.run()

运行结果:

5. 线程之间共享的全局变量:

代码演示:

import threadingnum = 100def work1():global numnum  += 1print("work1...",num)def work2():global numnum += 1print("work2...",num)def main():t1 =threading.Thread(target=work1)t2 =threading.Thread(target=work2)t1.start()t2.start()if __name__ == '__main__':main()

运行结果:

6. 共享全局变量的问题:

代码演示:

import time
import random
from threading import Threadnum = 100def work1():global numfor i in range(3):num += 1time.sleep(random.random())print("in work1,num = %d " %num)def work2():global numfor i in range(3):num += 1time.sleep(random.random())print("in work2,num = %d" %num)if __name__ == '__main__':t1 = Thread(target=work1)t2 = Thread(target=work2)t1.start()t2.start()

运行结果:

python线程的学习相关推荐

  1. Python|线程和进程|阻塞|非阻塞|同步|异步|生成器和协程|资源竞争|进程间通信|aiohttp库|daemon属性值详解|语言基础50课:学习(11)

    文章目录 系列目录 原项目地址 第34课:Python中的并发编程-1 线程和进程 多线程编程 使用 Thread 类创建线程对象 继承 Thread 类自定义线程 使用线程池 守护线程 资源竞争 G ...

  2. 小猪的Python学习之旅 —— 6.捋一捋Python线程概念

    小猪的Python学习之旅 -- 6.捋一捋Python线程概念 标签: Python 引言 从刚开始学习Python爬虫的时候,就一直惦记着多线程这个东西, 想想每次下载图片都是单线程,一个下完继续 ...

  3. python的线程组怎么写_Python学习——Python线程

    一.线程创建 1 #方法一:将要执行的方法作为参数传给Thread的构造方法 2 importthreading3 importtime4 5 defshow(arg):6 time.sleep(2) ...

  4. python3 线程池源码解析_5分钟看懂系列:Python 线程池原理及实现

    概述 传统多线程方案会使用"即时创建, 即时销毁"的策略.尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数极其频繁,那么服务器 ...

  5. 什么是Python线程?Python线程如何创建?

    相信正在学习Python技术或者对Python语言有一定了解的人对于Python线程应该都不陌生,但是也有刚接触Python的小伙伴对于Python线程并不了解,今天小编就跟大家聊聊什么是Python ...

  6. Python线程同步机制: Locks, RLocks, Semaphores, Condition

    为什么80%的码农都做不了架构师?>>>    翻译自Laurent Luce的博客 原文名称:Python threads synchronization: Locks, RLoc ...

  7. php 线程锁,如何使用python线程锁(实例解析)

    在这篇文章之中我们来了解一下什么是python线程锁.了解一下python线程锁的相关知识,以及线程锁在python编程之中能起到什么样的作用. 线程锁(互斥锁Mutex) 一个进程下可以启动多个线程 ...

  8. Python线程、进程知识整理

    一.python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 #!/usr/bin/env python2 # -*- coding:utf-8 -*-3 im ...

  9. python 线程超时设置_python 条件变量Condition(36)

    文章首发微信公众号,微信搜索:猿说python 对于线程与线程之间的交互我们在前面的文章已经介绍了 python 互斥锁Lock / python事件Event , 今天继续介绍一种线程交互方式 – ...

最新文章

  1. 用AI实现C++、Java、Python代码互译,运行成功率最高达80.9%
  2. 3——PHP 简单运算符的使用
  3. 网页授权有时候获取不到openid 的坑
  4. 数据结构—什么是基数排序?
  5. 计算机教室怎样自动批量修改ip,批量设置IP地址和计算机名
  6. dhcp request汉字乱码分析
  7. java sourcepath_说一下Java里面的路径问题,CLASSPATH和SOURCEPATH
  8. 错误175:具有固定名称MySql.Data.MySqlClient的ADO.NET提供程序未在计算机或者应用程序配置文件中注册或者无法加载
  9. 工作了五年的公司,拖欠员工报酬,该起诉吗?
  10. 系统学习深度学习(三十五)--策略梯度(Policy Gradient)
  11. 这款工具不用手写一行代码就能做出网站!
  12. on the way——《linux内核分析》学习总结
  13. 机械优化设计c语言鲍威尔法,机械优化设计C语言程序.doc
  14. 立创EDA学习笔记(2)——创建元件符号
  15. 金融安全视角农民投资理财的实证研究——以X县为例
  16. 编程基础---echarts学习
  17. matlab在频率特性法中的应用实验目的,matlab软件实习报告
  18. windows 如何查看、修改MAC地址?
  19. php 连接sqlserver数据库(一)
  20. vue created和mounted区别

热门文章

  1. Nexus 安装 使用说明
  2. Go语言操作MySQL的基础知识
  3. github上传命令
  4. 为什么要破坏JVM的双亲委派模型
  5. Ionic 4.0.2 发布,移动应用开发框架
  6. 项目管理工具——Maven
  7. [转] 2018年冬流感通知
  8. dockerfile用yum安装mysql服务
  9. dbUtils 原理
  10. 《Android深入透析》之界面