#并发式编程# 操作系统是一个用来协调、管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间。# (程序是运行在系统上的具有某种功能的软件,比如说浏览器,音乐播放器等。)# 操作系统的内核的定义:操作系统的内核是一个管理和控制程序,负责管理计算机的所有物理资源,# 其中包括:文件系统、内存管理、设备管理和进程管理。#-----------------------------------------------------------------------------------------## 进程定义:#     进程就是一个程序在一个数据集上的一次动态执行过程。#     进程一般由程序、数据集、进程控制块三部分组成。#     我们编写的程序用来描述进程要完成哪些功能以及如何完成;#     数据集则是程序在执行过程中所需要使用的资源;#     进程控制块用来记录进程的外部特征,描述进程的执行变化过程,#     系统可以利用它来控制和管理进程,它是系统感知进程存在的唯一标志。#-----------------------------------------------------------------------------------------## 线程定义:#      线程的出现是为了降低上下文切换的消耗,提高系统的并发性,并突破一个进程只能干一样事的缺陷,# 使到进程内并发成为可能。# 线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID、程序# 计数器、寄存器集合和堆栈共同组成。线程的引入减小了程序并发执行时的开销,提高了操作系统的并发# 性能。线程没有自己的系统资源。#-----------------------------------------------------------------------------------------## 线程与进程的区别:# 1 一个程序至少有一个进程,一个进程至少有一个线程.(进程可以理解成线程的容器)# 2 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。# 3 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和#   程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。# 4 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调#   度的一个独立单位.#   线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程#   自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈)但是#   它可与同属一个进程的其他的线程共享进程所拥有的全部资源.#   一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.# setDaemon守护线程# run():  线程被cpu调度后自动执行线程对象的run方法# start():启动线程活动。# isAlive(): 返回线程是否活动的。# getName(): 返回线程名。# setName(): 设置线程名。# threading模块提供的一些方法:# threading.currentThread(): 返回当前的线程变量。# threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。# threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。#-----------------------------------------------------------------------------------------#import time,threading# def Hi(num):#     print('hello %s'%num)#     time.sleep(2)# if __name__ == '__main__':#     t1 = threading.Thread(target=Hi,args=(10,))#     t1.start()#     t1 = threading.Thread(target=Hi, args=(9,))#     t1.start()#     print('ending......')# def music():#     print('begin to listen %s'%time.ctime())#     time.sleep(1)#     print('stop to listen %s'%time.ctime())# def game():#     print('begin to play %s'%time.ctime())#     time.sleep(5)#     print('stop to play %s'%time.ctime())# if __name__ == '__main__':#     t1 = threading.Thread(target=music)#     t2 = threading.Thread(target=game)#     t1.start()#     t2.start()#     # t1.join()  # 等待#     t2.join()#     print('end')#-----------------------------------------------------------------------------------------## import threading #导入threading模块# from time import ctime,sleep #导入time模块的ctime和sleep模块# def ListenMusic(name):    #定义music函数,模拟线程A#         print ("Begin listening to %s. %s" %(name,ctime()))       #打印程序的执行时间,模拟启动过程#         sleep(3)                                                  #程序待定3秒,模拟程序处理时间#         print("end listening %s"%ctime())                         #程序执行完毕,模拟程序结束# def RecordBlog(title):                                            #定义blog函数,模拟线程B#         print ("Begin recording the %s! %s" %(title,ctime()))     #打印程序的执行时间,模拟启动过程#         sleep(5)                                                  #程序待定5秒,模拟程序处理时间#         print('end recording %s'%ctime())                         #程序执行完毕,模拟程序结束# threads = []                                                      #新建一个threads列表,用于存储可能执行的线程# t1 = threading.Thread(target=ListenMusic,args=('水手',))          #threading.Tread赋值给t1,创建线程# t2 = threading.Thread(target=RecordBlog,args=('python线程',))     #threading.Tread赋值给t2,创建线程# threads.append(t1)                                                #append方法给线程新增值# threads.append(t2)                                                #同上# if __name__ == '__main__':                                        #直接执行文件#     t1.setDaemon(True)                                            #设置t1线程为守护线程,如果主线程关闭则一起关闭#     for t in threads:                                             #for循环执行线程#         # t.setDaemon(True)                                       #注意:一定在start之前设置#         t.start()                                                 #设置线程处于就绪状态#         # t.join()                                                #等待线程进行#     # t1.join()#     # t1.setDaemon(True)#     #t2.join()########考虑这三种join位置下的结果?#     if threading.active_count() ==1 :#         print ("all over %s" %ctime())

转载于:https://www.cnblogs.com/pandaboy1123/p/8567131.html

Pyhton学习——Day33相关推荐

  1. pyhton学习实例demo

    pyhton学习实例demo 一行代码输出特定字符"Love"拼成的心形 一行代码打印九九乘法表 一行代码打印九九乘法表 一行代码计算出1-100之间的素数(两个版本) 一行代码输 ...

  2. Pyhton学习——Day25

    #面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...

  3. pyhton学习之找出单词的个数并进行排序

    在学习C的时候,我们经常会做这样的算法题来提高我们的编程能力,然而在python中使用封装好的类库,就可以简单完成. 需要的模块有:re :该模块可以通过一定的规则寻找目标   Counter主要是用 ...

  4. Pyhton学习笔记第一天(Python基本语句)

    Python学习笔记第一天 注释 行注释 块注释 输出语句 举一反三 标识符 举一反三 多行语句 结束语 注释 什么是注释,注释相当于备注的信息,也可以在调试代码的时候隐藏执行代码,但只适合新手.老手 ...

  5. Pyhton学习——Day3

    # li = [1,12,9,"age","alex"] # #列表表示为[]括起来 # #列表用","分割每个元素 # #列表中的元素可以 ...

  6. Pyhton学习——Day9

    #文件操作的其他方法 ###############################################################################文件的内置操作函数# ...

  7. day10 Pyhton学习

    一.昨日内容回顾 函数: 定义:对功能或者动作的封装 def 函数名(形参): 函数体 函数名(实参) return:  返回,当程序运行到return的时候,终止函数的执行 一个函数一定拥有返回值 ...

  8. pyhton学习,day1作业,用户名密码登录模块

    要求,通过用户名密码登录,登录错误3次,锁定用户名 1 # coding=utf-8 2 # Author: RyAn Bi 3 4 import os, sys #调用系统自己的库 5 6 acco ...

  9. pyhton学习-1

    Python的变量不需要声明,可以直接输入. 内置函数type(), 用以查询变量的类型. 例如: print type(a) 如果想让 a 存储不同的数据,不需要删除原有变量就可以直接赋值. pri ...

最新文章

  1. linux内核分析 网络九,“Linux内核分析”实验报告(九)
  2. 径向基函数插值(4)三维数据的插值
  3. C语言多线程教程(pthread)(线程创建pthread_t,指定线程run方法pthread_create,加mutex锁,解锁,伪共享 false sharing【假共享】)
  4. python编写界面遍历_python和pywin32实现窗口查找、遍历和点击的示例代码
  5. 使用ShellExecuteEx打开文件或者其他
  6. umail邮件服务器如何保证数据安全性?
  7. SonicWall 督促客户立即修复NSM 本地版本漏洞
  8. java压缩解压文件
  9. 惠普linux打印驱动怎么安装驱动程序,hp打印机驱动怎么安装 惠普打印机驱动程序安装方法【详解】...
  10. 明解java.pdf_明解C语言:中级篇 PDF下载
  11. angular 使用jsMind
  12. 在word中快速得到数学公式
  13. repost ACM算法学习三境界---王国维人间词话
  14. MySQL 文本类型,存储大小
  15. 全自动过滤器:全自动自清洗过滤器对给排水总结的经验
  16. SpringBoot+H5微信登陆(网页)
  17. 《编程人生》中15业界传奇人物介绍
  18. HTML 微信 获取微信ID,在微信浏览器里获取Cookie,获取微信用户的openId
  19. DevOps 全栈开发基础
  20. QXlsx(访问Excel)

热门文章

  1. scalar2color
  2. MAYA中average normal
  3. 3.8 - Using the Print Function
  4. css卷轴动画小程序,微信小程序登录页:CSS实现动画云层漂浮
  5. 计算机视觉基础-图像处理 Task06 边缘检测
  6. 迁移学习SSD深度网络模型,实现文本行检测
  7. 李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材
  8. KNN算法虹膜图片识别(源码)
  9. pmbok第六版_英文版(带目录).pdf_书籍分享 | 高等数学(第六版)含解析~同济大学...
  10. Fixchart图表组件——仪表盘,纳尼?