操作系统:(承上启下作用,起到硬件与应用程序之间的连接作用(或者接口作用))

进程:本质上是一段程序运行的过程,是一个抽象的概念。      进程的目的就是切换,也就是程序A与程序B矛盾时,可以切换执行,提高CPU的效率。

      进程包括三部分:程序,数据集,程序控制块三个部分。      程序是一个实体,进程是一个抽象。数据集相当于输入。程序控制块用于切换时,记录上一个进程执行到哪等信息。      说道切换,可以是一个进程遇到IO操作的时候,执行切换(因为IO时,CPU空闲);也可以根据时间序列切换等等。

      如果只有一个CPU,进程切换只是实现并发(感觉看起来一起执行,比如既可以上网,也可以听歌,实际上不是同时执行),      并行至少需要多核(多个cpu).这样假如两个CPU同时对应4个任务,这样就既有并行也有并发。

线程:有了进程后,可以实现一边玩游戏一边听音乐了。假设一个文本程序,当键盘输入的同时,需要屏幕显示,并且同时刻录到磁盘中。      如果只是用一个进程的话,只能安顺序执行,也就是说键盘输入的同时,屏幕上是看不到的,要等输入完。      因此需要多进程,但是一个程序就这样分了,搞得跟多个程序似的,并且多进程切换过程会降低效率。

      线程其实可以理解为一个进程中微进程,它共享一个进程中的资源集,线程的切换也比进程的切换省事。比如扣扣,既可以一边聊天,      又可以一边接收邮箱信息。它们共享一个用户的信息,状态什么的。

进程与线程区别:    1.一个程序至少有一个进程,一个进程至少有一个线程。(进程可以理解成线程的容器)

    2.进程在执行过程中拥有独立的内存单元,而多个线程共享(一个进程)内存,从而极大地提高了程序的运行效率

    3.线程是最小的执行单元,进程是最小的资源单位(操作系统分资源最小分发进程)。线程不可能脱离进程独立存在    等等

下面看两个简单的多线程例子:

 1 import threading
 2 import time
 3
 4 def music():
 5     print("begin to listen %s"%time.ctime())
 6     time.sleep(3)
 7     print("stop listening %s" % time.ctime())
 8
 9 def game():
10     print("begin to game %s"%time.ctime())
11     time.sleep(5)
12     print("stop gaming %s" % time.ctime())
13
14
15 if __name__ == '__main__':
16
17     t1 = threading.Thread(target=music)
18
19     t2 = threading.Thread(target=game)
20
21     t1.start()       # 与lesson2放在上面是一样的
22     t2.start()
23
24     t1.join()        # join这个方法是子线程对象调用的函数,函数的意思是t1这个子线等待结束后,主线程才能走
25     # t2.join()
26
27     # 与join对应的.setDaemon是守护线程,比如T1设置为守护线程,
28     # 意思就是t1这个线程跟主线程一起退,主线程结束后,它问一下其他非守护线程,其他的非守护线程也都结束,它结束
29
30     print("ending............")

View Code

 1 '''
 2 线程,threading可以开线程,里面实例对象有几个重要的方法,比如:.start,.join,.setDaemon
 3 t = threading.Thread()
 4 以上是t的方法(实例化的属性)
 5 另外threading模块还有一些方法:
 6 threading.currentThread()      返回当前的线程变量
 7 threading.enumerate()           返回一个包含正在运行的线程的list.正在运行指线程启动后,结束前。
 8 threading.activeCount()         返回正在运行的线程数量,与len(threading.enumerate())有相同的结果
 9 '''
10
11 import threading  # 线程
12 import time
13
14
15 def Hi(num, i):
16     print("hello %s" % num)
17     time.sleep(int(i))
18
19
20 if __name__ == '__main__':
21
22     # 主线程下面开了两个子线程
23
24     t1 = threading.Thread(target=Hi, args=(10,2))  # 实例化一个线程对象,开一个子线程1
25     t1.start()
26
27     t2 = threading.Thread(target=Hi, args=(9,7))  # 实例化一个线程对象,开一个子线程2
28     t2.start()
29
30     print("ending.................")

View Code

转载于:https://www.cnblogs.com/maxiaonong/p/9500372.html

threading多线程模块相关推荐

  1. python 主线程_Python threading多线程模块

    Python是支持使用多线程的,程序代码可以在一个进程空间中操作管理多个执行的线程,python模块下载时要记得,这个库叫做 threading. 一.threading模块简介 在Python多线程 ...

  2. Python学习心得(七) 深入理解threading多线程模块

    Python提供了多个模块来支持多线程编程,包括thread.threading和queue模块等. thread模块提供了基本的线程和锁定支持:而threading模块提供了更高级别.功能更全面的线 ...

  3. python:threading多线程模块-使用Queue模块保持线程同步

    利用Queue对象先进先出的特性,将每个生产者的数据一次存入队列,而每个消费者将依次从队列中取出数据 import threading # 导入threading模块 import Queue # 导 ...

  4. python——Tkinter图形化界面及threading多线程

    Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macinto ...

  5. python多线程下载大文件_Python threading多线程断点下载文件的方法

    这是玩蛇网一篇关于Python多线程下载文件方法的代码实例.文中应用到的python模块和方法有httplib.Python urllib2.Python threading多线程模块.python ...

  6. python 多线程 模块_Python多线程threading和multiprocessing模块实例解析

    本文研究的主要是Python多线程threading和multiprocessing模块的相关内容,具体介绍如下. 线程是一个进程的实体,是由表示程序运行状态的寄存器(如程序计数器.栈指针)以及堆栈组 ...

  7. python实现多线程的三种方法threading.Thread(模块)的继承实现和函数实现;以及concurrent.futures模块的线程池实现

    1.threading.Thread模块继承实现: import threading import timeclass TestThread(threading.Thread):def __init_ ...

  8. 多线程介绍和多线程模块-lock-互斥锁

    多线程介绍和多线程模块 线程的特点: 线程的生命周期 开始 运行 结束 线程的退出: 进程执行完成 线程的退出方法 python的系统推出 模块函数 start_new_thread(func, ar ...

  9. 用生动的案例一步步带你学会python多线程模块

    鱼和熊掌不可兼得 鱼,我所欲也,熊掌,亦我所欲也,二者不可得兼,舍鱼而取熊掌者也. 从6月开始写公众号,连着四个月一直尽量保证一周五更,结果整天熬夜搞的身体素质骤降.十一休假决定暂时将公众号放放,好好 ...

最新文章

  1. chattr 文件隐藏属性
  2. 合并远程仓库到本地_git远程仓库
  3. DotNet关键知识点——WPF篇(一)(范德成编辑批注版)
  4. java8 streams_另一个Java 8 Lamdbas和Streams示例
  5. 《MySQL tips:并发查询与并发连接区别》
  6. C语言求x和y的乘积,计算方程式,求x,C语言中怎么计算x,y的值?
  7. 数据结构之 顺序栈、共享栈、链栈
  8. 【会议】2008-10-27
  9. 开源软件使用_亲爱的父母:让您的孩子使用开源软件
  10. 吃货的第一要诀 | 在马来西亚这么吃才爽!
  11. 把计算机怎么连接手机的网络助手在哪里,手机连接电脑上网,详细教您手机如何连接电脑上网...
  12. iMazing有哪些好用的功能
  13. 深度学习中常用的数据集
  14. linux目录常用命令
  15. ios共享账号公众号_我的世界 minecraft 国际版 非网易版 ios下载账号分享 公众号 iphone ipad...
  16. SAP BAPI_SALESORDER_CREATEFROMDAT2 创建销售订单
  17. 数理统计学:世纪末的回顾与展望(陈希孺)
  18. MyBatis可视化代码生成工具
  19. Java连接redis集群报错,connection refused 和Could not get a resource from the pool
  20. SpringBoot 项目实现 Excel 导入导出功能

热门文章

  1. Git2.29让Git成功“牵 手”Gerrit
  2. ThingJS:部署物联网不用买买买,互联互动是切入点
  3. ASM 常用概念解释
  4. alter system switch logfile和alter system archive log current的区别
  5. 从DUMP函数说开去
  6. windows当代理服务器-CCProx的使用
  7. CCF - 201503-3 - 节日
  8. ubuntu16.04下安装emacs
  9. StrutsPreparedAndExcuteFilter与Interceptor
  10. Lua的继承(利用setmetatable)