zoukankan      html  css  js  c++  java
  • python3 多线程,线程锁

    python使用多线程, 不一定运行速度快,这里引入GIL(global interpreter lock)
    python解释器中任意时刻都只有一个线程在执行;
    GIL执行过程:
    1). 设置一个GIL;
    2). 切换线程去准备执行任务(Runnale就绪状态);
    3). 运行;
    4). 可能出现的状态:
    - 线程任务执行结束;
    - time.sleep()
    - 需要获取其他的信息才能继续执行(eg: 读取文件, 需要从网络下载html网页)
    5). 将线程设置为睡眠状态;
    5). 解GIL的锁;
    多线程的应用场景: I/O密集型(input, output) — 爬虫
    不建议使用多线程的场景: 计算密集型(cpu一直占用)

    1. 队列与线程

    1). 理论上多线程执行任务是不能获取返回结果的, 因此需要一个容器来存储产生的数据;
    2). 容器该如何选择? list(栈, 队列), tuple(元组是不可变的, 不可使用),
    set(集合默认会去重, 所以不选择), dict
    选择队列类型存储(FIFO===first input first output) 
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    js截取字符串区分汉字字母代码
    List 去处自定义重复对象方法
    63. Unique Paths II
    62. Unique Paths
    388. Longest Absolute File Path
    41. First Missing Positive
    140. Word Break II
    139. Word Break
    239. Sliding Window Maximum
    5. Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/sea-stream/p/14192604.html
Copyright © 2011-2022 走看看