zoukankan      html  css  js  c++  java
  • Python进阶:多线程、多进程和线程池编程/协程和异步io/asyncio并发编程

    gil:

    gil使得同一个时刻只有一个线程在一个CPU上执行字节码,无法将多个线程映射到多个CPU上执行

    gil会根据执行的字节码行数以及时间片释放gil,gil在遇到io的操作时候主动释放

    threading:

    queue:

    Lock::

    condition:

    condition有两层锁, 一把底层锁会在线程调用了wait方法的时候释放, 上面的锁会在每次调用wait的时候分配一把并放入到cond的等待队列中,等到notify方法的唤醒

    semaphore:

    ThreadPoolExecutor:

    multiprocessing:

    进程:

    • 对于耗费cpu的操作,多进程优于多线程
    • 对于io操作来说,多线程优于多进程

    多进程间通信:

    • multiprocessing中的queue不能用于pool进程池
    • pool中的进程间通信需要使用manager中的queue
    • 通过pipe实现进程间通信
  • 相关阅读:
    Bzoj1597 [Usaco2008 Mar]土地购买
    Bzoj1500 [NOI2005]维修数列
    模拟7 题解
    模拟6 题解
    模拟5 题解
    远古杂题 2
    远古杂题 1
    [NOIP2013]华容道 题解
    奇袭 CodeForces 526F Pudding Monsters 题解
    图论杂题
  • 原文地址:https://www.cnblogs.com/darklights/p/11783805.html
Copyright © 2011-2022 走看看