Python3.5 学习九
进程与线程
线程(Thread)是计算机运算调度的最小单位,它存在于进程中,是实际运作单位。每个进程都可能并发多线程。
每一个程序的内存是独立的。
线程:是操作系统最小的运算调度单位,是一串指令的集合。
所有在同一进程里的线程是共享同一块内存空间,而多线程抢同一资源时会出现问题。
第一个创建的线程为主线程,但主线程和子线程之间没有任何隶属关系的,这与主进程子进程不一样
进程:一个程序执行的实例(应用程序)就被称为一个进程。要以一个整体形势暴露给操作系统来管理,里面包含对各种资源的调用,内存的对各种资源管理的结合,就可以成为进程。
进程和线程的区别:
1. 线程共享内存空间,进程的内存是独立的
2. 子线程共享内存空间,多子进程的资源都是相同的COPY,是独立而不是共享的。
3. 同一进程长得线程之间可以直接交流,两个进程之间如果要通信,必须通过一个中间代理来实现
4. 创建新线程很简单,创建新进程需要对其父进程进行一次克隆
5. 一个线程可以控制和操作同一进程里的其他线程,但进程只能操作子进程
6. 对主线程的修改有可能会影响其他线程的运行,但对父进程的修改,不会影响其他子进程的运行
7. 主线程关闭,不会影响其他子线程运行,主进程关闭,子进程也会结束。
线程类继承threading.Thread
等待线程结束:t.join()
将子线程设置为守护线程:t.setDaemon(True)
主线程退出,子线程便都退出了
全局解释器锁gil:多核的机器,可以真正同时并发
但是在C-Python中,实际只是一核在运算,调用操作系统的原生线程,只有同一时间可以拿到数据,实际以单核执行
Python将来使用pyty技术,会速度非常快。去掉全局解释器锁,加入了Justruntime,即时编译,边编译边执行,提前预编译一部分。
如果程序间需要锁套锁,需要使用递归锁的概念,Rlock

信号量:相当于房间的门,有多个,每个有一个锁,出来一个可以再进去一个

event=threading.event()
事件的方法:
set()
is_set()
clear()
wait()
红绿灯实例:
# Author:huhu
import threading
import time event = threading.Event()
def lighter():
count=0
event.set()
while True:
if count>=5 and count<10:#改成红灯
event.clear() #把标志位清空了
print("\033[41;1mred light is on...\033[0m")
elif count>10:
event.set()
count=0
else:
print("\033[42;1mgreen light is on...\033[0m")
time.sleep(1)
count+=1 def car(name):
while True:
if event.is_set():
print("[%s] is running..."%name)
time.sleep(1)
else:
print("[%s] sees red light...waiting..."% name)
event.wait()
print("\033[34;1m[%s] green light is on,start running.\033[0m"% name) light = threading.Thread(target=lighter,)
light.start() car1 = threading.Thread(target=car,args=("Tesla",))
car1.start() 重点知识之queue队列: 可理解为一个存放数据的容器,
class queue.Queue(maxsize=0) #先入先出
class queue.LifoQueue(maxsize=0) #后入先出
class queue.PriorityQueue(maxsize=0) #存储数据时可设置优先级的队列
重要的作用:
1 完成对程序解耦
2 提高运行效率
利用多线程和队列做一个生产者消费者多并发模型实例:详见20180810
本周作业:
开3个不同,主机用户名不同
简单主机批量管理:
主机列表
1 exec cmd
2 send file
每个操作是每台主机都做相同的操作
Python3.5 学习九的更多相关文章
- python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法
python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法 同一台机器同时安装 python2.7 和 python3.4不会冲突.安装在不同目录,然 ...
- python3.4学习笔记(九) Python GUI桌面应用开发工具选择
python3.4学习笔记(九) Python GUI桌面应用开发工具选择 Python GUI开发工具选择 - WEB开发者http://www.admin10000.com/document/96 ...
- python3.4学习笔记(四) 3.x和2.x的区别,持续更新
python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...
- python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容
python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...
- python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容
python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置
python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置Download JetBrains Python IDE :: PyCharmhttp://www. ...
- python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码
python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...
- python3.4学习笔记(二十五) Python 调用mysql redis实例代码
python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...
随机推荐
- ajax原理以及优缺点(转)
1.ajax技术的背景不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax的 ...
- boost基础环境搭建
因为现在手上的老的基类库经常出现丢包,以及从ServiceAClient 发送消息到 ServiceBServer时出现消息失败的情况,以及现有的莫名其妙的内存泄露的问题,以及目前还是c++0x,准确 ...
- MetroApp保存UIEment为图片
写本文的起因是想截取Metro App画面作为图片来使用Win8的共享. 话说自从大MS的客户端UI技术进入XAML时代之后,每次截屏的代码都不太一样,无论silverlight.WPF还是Windo ...
- 关于adbd进程的ROOT权限问题
http://blog.csdn.net/a345017062/article/details/6254402 adbd源码位于system/core/adb/目录下,可执行文件位于/sbin/adb ...
- jquery统计显示或隐藏的元素个数
统计显示的checkbox的数量: 统计隐藏的checkbox数量:
- 使用Java实现网络爬虫
网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 另外一些不常使用的名字还有蚂蚁.自动索引.模 ...
- 2018.09.23 bzoj1076: [SCOI2008]奖励关(期望+状压dp)
传送门 一道神奇的期望状压dp. 用f[i][j]f[i][j]f[i][j]表示目前在第i轮已选取物品状态为j,从现在到第k轮能得到的最大贡献. 如果我们从前向后推有可能会遇到不合法的情况. 所以我 ...
- web大文件上传(web应用---SSH框架)
版权所有 2009-2018荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...
- struts2 file
JavaBean 中: private File[] pic; private String[] picContentType; private String [] picFileName; sett ...
- (最小生成树)Constructing Roads -- poj -- 2421
链接: http://poj.org/problem?id=2421 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 2113 ...