zoukankan      html  css  js  c++  java
  • Python成长笔记

    本节内容
    1. 进程、与线程区别
    2. python GIL全局解释器锁
    3. 线程
      1. 语法
      2. join
      3. 线程锁之LockRlock信号量
      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、提高效率
     
     
     
  • 相关阅读:
    groovy集合
    groovy函数、字符串、循环
    groovy运行程序和类型推断
    常见IT英语短语一
    常见IT英语单词
    认识Groovy
    maven入门
    springboot之内嵌tomcat修改端口号
    springboot手动配置数据源:
    img与父元素的间隙解决
  • 原文地址:https://www.cnblogs.com/huangmx-amin/p/5899393.html
Copyright © 2011-2022 走看看