Pyhton学习——Day33
#并发式编程
# 操作系统是一个用来协调、管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间。
# (程序是运行在系统上的具有某种功能的软件,比如说浏览器,音乐播放器等。)
# 操作系统的内核的定义:操作系统的内核是一个管理和控制程序,负责管理计算机的所有物理资源,
# 其中包括:文件系统、内存管理、设备管理和进程管理。
#-----------------------------------------------------------------------------------------#
# 进程定义:
# 进程就是一个程序在一个数据集上的一次动态执行过程。
# 进程一般由程序、数据集、进程控制块三部分组成。
# 我们编写的程序用来描述进程要完成哪些功能以及如何完成;
# 数据集则是程序在执行过程中所需要使用的资源;
# 进程控制块用来记录进程的外部特征,描述进程的执行变化过程,
# 系统可以利用它来控制和管理进程,它是系统感知进程存在的唯一标志。
#-----------------------------------------------------------------------------------------#
# 线程定义:
# 线程的出现是为了降低上下文切换的消耗,提高系统的并发性,并突破一个进程只能干一样事的缺陷,
# 使到进程内并发成为可能。
# 线程也叫轻量级进程,它是一个基本的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())
Pyhton学习——Day33的更多相关文章
- Pyhton学习——Day26
#多态:多态指的是一类事物有多种形态# import abc# class Animal(metaclass = abc.ABCMeta):# 同一类事物:动物# @abc.abstractclass ...
- pyhton 学习
官方学习文档 https://docs.python.org/3/tutorial/
- 20190320_head first pyhton学习笔记之构建发布
1.把代码nester.py放入文件夹nester中,在文件夹中再新建一个setup.py文件,文件内容如下: from distutils.core import setup setup( name ...
- Pyhton学习——Day2
Python开发IDE(工具)Pycharm.eclipse1.循环while 条件 #循环体 #条件为真则执行 #条件为假则执行break用于退出所有循环continue用于退出当前循环 2.Pyc ...
- Pyhton学习——Day28
#上下文协议:文件操作时使用with执行# with open('a.txt','w',encoding='utf-8') as f1:# with语句,为了让一个对象兼容with语句,必须在这个对象 ...
- Pyhton学习——Day27
# hasattr(obj,'name')-->obj.name# getattr(obj,'name',default = 'xxx')--->obj.name# setattr(obj ...
- Pyhton学习——Day25
#面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...
- Pyhton学习——Day24
# #面向对象设计:# def dog(name,gender,type):# def jiao(dog):# print('One Dog[%s],wfwfwf'%dog['name'])# def ...
- Pyhton学习——Day23
#re模块方法:findall search#findall:返回所有满足匹配条件的数值,放在列表里#search : #函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象 ...
随机推荐
- 16种C语言编译警告(Warning)类型的解决方法
当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息.警告信息可能意味着程序中隐含的大错误,也可能确实没有问题.对于警告的正确处理方式应该是:尽可能地消除之.对于编译程序给出的每个警告 ...
- C语言基础 (11) 结构体 ,共用体 枚举 typedef
1 课堂回顾 作用域与生命周期 2 static 局部变量 2 打字游戏 3 内存分区代码分析 4 结构体基本操作 (复合类型[自定义类型 #include <stdio.h> #incl ...
- spring boot --部署war到tomcat中
1.在pom文件中,将默认的jar包打包,改成以war包打包:<!--打包方式--><packaging>war</packaging> 2.将项目在doc命令中执 ...
- JavaScript进阶【一】JavaScript模块化开发的基础知识
//模块化的最初写法 //1.最初写法 //下面的m1和m2就组成了一个模块 //缺点:"污染"了全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系. f ...
- 计蒜客 时间复杂度 (模拟) & 洛谷 P3952 时间复杂度
链接 : Here! 思路 : 这是一道大模拟, 区分好情况就没问题了 循环构成部分 : $F , x , i , j$ 和 $E$ , 需要注意的是 $i , j$, - 分析 $i, j$ 的情况 ...
- CodeForces-546D Soldier and Number Game 筛法+动态规划
题目链接:https://cn.vjudge.net/problem/CodeForces-546D 题意 抱歉,我给忘了,现在看题目又看不懂: P 思路 筛法+dp 话说这个函数应该是积性函数,然后 ...
- 会话cookie和持久化cookie实现session
当你第一次访问一个网站的时候,网站服务器会在响应头内加上Set- Cookie:PHPSESSID=nj1tvkclp3jh83olcn3191sjq3(php服务器),或Set-Cookie JSE ...
- chckBox样式的修改
在Android开发中,系统自带的默认CheckBox由于比较简陋,可能难以满足部分人的审美需求,不过,Android具有很强的扩展性,自定义CheckBox其实也很简单. 1. Layout中定义C ...
- IIS部署ASP.NET网站后提示只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态...
今天,在IIS上部署网站后,出现了下面错误: 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态.还请确保在应用程序配置的 <sy ...
- 06006_redis数据存储类型——String
1.概述 (1)字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等: (2)在Redis中 ...