本节内容
  1. 进程、与线程区别
  2. python GIL全局解释器锁
  3. 线程
    1. 语法
    2. join
    3. 线程锁之Lock\Rlock\信号量
    4. 将线程变为守护进程
    5. Event事件 
    6. queue队列
    7. 生产者消费者模型
    8. Queue队列
    9. 开发一个线程池
  1. 进程
    1. 语法
    2. 进程间通讯
    3. 进程池    
 
ssh
 
ssh_sftp
 
 
 
 
SSH密钥
RSH -非对称密钥验证
 
公钥:public key
私钥: privat key
 
10.0.0.31 ----连接----> 10.0.0.41
私钥 公钥
 
10.0.0.31 生成密钥对ssh-keygen
 
 
进程和线程
线程:(一堆指令)就是os操作系统去调度CPU操作运算的最小单位
进程:一堆资源的集合,不具备执行的属性,要操作CPU,先必须创建一个线程。--->一个进程最少包含一个线程(主线程)才能执行。。例如qq就是一个进程,
 
线程4、同一个进程的不同线程之间可以相互交流;两个进程想交流了必须通过一个中间代理
5、一个线程可以控制和操作同一进程中的其他线程;但是进程只能操作子进程
 
存储速度: cpu>内存>文件
一个程序不能访问另一个程序:程序就是一个进程,两个进程之间不可相互访问
 
eg. :
一次性启动50个线程,统一等最后的结果:
解:先创建一个临时列表,把所有的结果添加进去,然后循环列表
import threading
import time
 
#一、直接调用
start_time =time.time()
t_obj = []
def run(n):
print("hello",n)
time.sleep(2)
 
for i in range(50):
t= threading.Thread(target=run, args=("t-%s"%i,))
t.start()
t_obj.append(t)
 
for t in t_obj:
t.join()
print("t-%s has finished..."%i)
 
print("cost time : ",time.time()-start_time)
print("well done!!")
 
 
 
 
threading.current_thread() #查看进程类型
threading.active_count()#查看活动的线程
 
守护进程(守护线程):依赖与主线程存活,主进程执行完毕,所有的守护线程也跟着结束,程序退出。
 
gil锁
用户锁
 
递归锁rlock:多级锁防锁死
 
 
Semaphore(信号量)
import threading,time
 
def run(n):
semaphore.acquire()
time.sleep(1)
print("run the thread: %s" %n)
semaphore.release()
 
if __name__ == "__main__":
semaphore = threading.BoundedSemaphore(5) #最多同时允许5个线程同时运行
for i in range(20):
t =threading.Thread(target=run,args=(i,))
t.start()
 
while threading.active_count() !=1 :
pass
else:
print("--- all threads done ---")
 
 
 
 
 
优点:1、程序的解耦
2、提高效率
 
 
 

Python成长笔记 - 基础篇 (十)的更多相关文章

  1. Python成长笔记 - 基础篇 (十二)

    本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 主题:学员管理系统 需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的 ...

  2. Python成长笔记 - 基础篇 (十一)

    回顾: 线程:资源的集合:内存共享,两个或多个线程同时修改一份数据时,造成结果可能不正确,必须加锁 进程:运行的最小单元 守护进程:在start之前设置setDemo() 队列queue:作用解耦,使 ...

  3. Python成长笔记 - 基础篇 (七)python面向对象

      三大特性: 1.封装:在类中对数据赋值.内部调用对外部用户是透明的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法 2.继承:一个类可以派生出子类,在父类中定义的属性.方法会自动被子类继承 ...

  4. Python成长笔记 - 基础篇 (六)python模块

    本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...

  5. Python成长笔记 - 基础篇 (四)函数

    1.面向对象:类(class) 2.面向过程:过程(def) 3.函数式编程:函数(def)----python   1.函数:http://egon09.blog.51cto.com/9161406 ...

  6. Python成长笔记 - 基础篇 (三)python列表元组、字典、集合

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码   一.列表和元组的操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义 ...

  7. Python成长笔记 - 基础篇 (二)python基本语法

    Python的设计目标之一是让代码具备高度的可阅读性.它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观.它不像其他的静态语言如C.Pascal那样需要重复书写声明语句,也不像 ...

  8. Python成长笔记 - 基础篇 (一)python简介

    一.Python介绍 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),由吉多·范罗苏姆(Guido van Rossum)于1989年发明,第一个公开发行版发行于1991 ...

  9. Python成长笔记 - 基础篇 (十三)--堡垒机

    堡垒机架构 堡垒机的主要作用权限控制和用户行为审计,堡垒机就像一个城堡的大门,城堡里的所有建筑就是你不同的业务系统 , 每个想进入城堡的人都必须经过城堡大门并经过大门守卫的授权,每个进入城堡的人必须且 ...

随机推荐

  1. app进入后台之后接收到通知,点进去进入新的页面,再次进入后台,再点击通知进入页面(,两次通过通知进入的页面,创建了两次,会多一个页面,)解决办法监听

    在点击通知进入的页面的 //UIApplicationWillResignActiveNotification是app即将进入后台的方法 //增加监听使它在进入后台之前pop上一个页面 - (void ...

  2. 使用UDP协议与韩国OACIS压机通讯

    最近一个项目需要发送SN给OACIS, 研究了一下OACIS文档, 从文档中可以看出,传输协议只能使用UDP,切传输命令为>SN1; + SN  + ; + LF LF的定义在Linux和Uni ...

  3. selenium第二课(脚本录制seleniumIDE的使用)

    一.Selenium也具有录制功能,可以web中回放,录制的脚本可以转换为java.python.ruby.php等多种脚本语言.seleniumIDE是Firefox的一个插件,依附于Firefox ...

  4. 去除inline-block元素间间距的N种方法

    这篇文章发布于 2012年04月24日,星期二,22:38,归类于 css相关. 阅读 147771 次, 今日 52 次 by zhangxinxu from http://www.zhangxin ...

  5. bootstarp-table表格中嵌套多个BUTON按钮实现

    bootstarp-table表格中嵌套多个BUTON按钮实现   有时我们需要在bootsharp-table表格中嵌套多个按钮,来实现不同的功能,大概界面如下:   实现功能如下: 1:构建表格 ...

  6. js替换选中的文字

    替换html中选中的文字 function replaceSelection() { if (window.getSelection) { var selecter = window.getSelec ...

  7. 我 && yii2(日志埋点,邮件提醒)

    今天试着把yii2 的日志,如果发送邮件的形式实现,具体实现如下 1.环境介绍 lnmp php5.6, mysql5.5, lnmp1.2 yii2-advanced 2.配置文件的编写 在fron ...

  8. 小心Java中封装类的值比较

    一般我们使用数值时,都是使用基本类型,如int.long等,但如果你喜欢使用Integer.Long的包装类,那有一点可就得注意了.先来看下这段代码: /** * * @author trytocat ...

  9. 提交ajax验证用户名是否已存在

    前端页面 <tr> <td class="p_label"><span class="notnull"></span& ...

  10. c# datagridview 中DataSource的使用总结

    由于当前项目的窗体更新使用的是订阅事件的方式.其中有个datagridview 动态显示统计数据的列表框.本来想用textbox显示,但不规则,看起来也不美观,改由dgv显示. 我没打算用改dgv表的 ...