• Python之并行编程笔记


    概述:

           非并发: 1 程序由单个步骤序列构成  2 包含独立子任务的程序执行性能低

            并发:  1 异步、高效  2 分解子任务、简化流程与逻辑

             进程process:1 一个程序的执行实例  2 每个进程有自己的地址空间、内存、数据栈及辅助数据

            线程 thread: 1 同一进程内,可被并行激活的控制流  2 共享相同上下文(空间地址、数据结构)

                                  特点 1 便于信息共享和通信  2线程访问顺序差异会导致结果不一致(条件 race condition)

             Python GIL 全局解释器锁:Global  Interpreter Lock

                                                        Python 代码由虚拟机(解释器主循环)控制

                                                        主循环同时只能有一个控制线程执行

    多线程

           _thread  Python已经不推荐使用

                     特点:  没有控制进程结束机制、只有一个同步原语(锁)、功能少于threading模块

                                .start_new_thread(function,args, **kwargs=None) 开始线程

           threading 模块

                    .Thread 线程  构造:.Thread(target=目标函数,args=(参数,))

                                                     自定义Thread派生类,重写run方法逻辑

                                      .start()  启动线程

                                      .join()  要求主线程等待

                                     .name  线程名称

                    .current_thread()  获取当前线程

                    同步原语:锁(效率不是很高,需要一定的逻辑加锁)

    队列:

         queue模块  Queue FIFO:.Queue(maxsize=0) 构造实例

                                                  .put(item, block=True, timeout=None)  放入数据项

                                                  .get(block=True, timeout=None)  获取数据项

                                                  .task_done()  声明当前队列任务处理完毕

                                                  .join()  队列所有项处理完毕前阻塞

                           LifoQueue LIFO

                           PriorityQeue 优先级队列

    multiprocessing模块   充分运用多核、多CPU的计算能力,适用于计算密集型任务

    concurrent.futures 模块   ThreadPoolExecutor、ProcessPoolExecutor

  • 相关阅读:
    iOS开发UI篇—CAlayer简介
    iOS开发UI篇—ios手势识别(双击、捏、旋转、拖动、划动、长按, 上下左右滑动)
    录屏专家
    加载Gif图片方法
    制作酸奶方法
    UITabBar小红点(适配iPad)
    那些著名或非著名的iOS面试题-后编
    iOS学习资源
    实用的Mac软件
    安装iOS企业包流程
  • 原文地址:https://www.cnblogs.com/yang901112/p/11342892.html
Copyright © 2020-2023  润新知