• 并发


    进程
    特点:操作系统级别 开销大 数据隔离
    资源分配的最小单位 数据不安全
    可以利用多核
    线程
    特点:操作系统级别 开销小 数据共享
    被cpu调度的最小单位 数据不安全
    可以利用多核
    协程
    特点:用户级别 开销极小 数据共享的
    不能利用多核 从代码级别来看数据安全

    GIL:全局解释器锁 , Cpython解释器下的
    ,导致了同一进程中多个线程不能利用多核
    相对安全 gc垃圾回收机制,不想加太多细粒度的锁
    pypy : 解释器 gc垃圾回收机制,GIL锁
    jython : python -->java的字节码 java的虚拟机解释 没有GIL 可以利用多核

    一次IO操作
    从文件读/从网络上读 :9ms = 9/1000
    cpu计算速度 = 500000000/s * 9/1000 = 500000 *9 = 4500000条cpu指令
    一句python代码 = 5条cpu指令
    4500000/5 = 900000行python代码

    import gevent
    from gevent import monkey
    monkey.patch_all()
    import time
    a = 0
    def func():
    global a
    tmp = a
    tmp += 1
    time.sleep(1)
    a = tmp

    g1 = gevent.spawn(func)
    g2 = gevent.spawn(func)
    gevent.joinall([g1,g2])
    print(a)

    进程
    你用过什么起进程的模块么?
    multprocessing
    concurrent.futrues 进程池
    Process(target=func,args=(参数,)).start()
    join()
    ProcessPoolExcutor

    为什么要起进程?
        爬虫的时候 数据分析做的比较复杂 比较多  -- 开启多进程
        为什么要爬虫?
    

    线程
    你用过多线程么? 用过、爬虫
    django(默认就是线程)socketserver(多线程+io多路复用)flask(默认用协程,协程找不到,就用线程)
    你知不知道python的GIL锁
    这个锁有什么效果

    你写代码的时候用到过哪些锁
        互斥锁(只能acquire一次) 递归锁(在一个线程中acquire多次也不会死锁)
        互斥锁 效率高、用好了也不会出错
    logging queue list 是否线程安全
        logging queue 线程安全
        list 的所有方法都是线程安全的 append insert extend pop
            list[0] += 1 线程不安全了
        dict update setdefault 都是线程安全的
            dic[key] += 1 线程不安全
    

    协程
    gevent asyncio
    你用过协程么?
    爬虫 aiohttp
    web项目 sanic asyncio模块
    线程和协程的区别
    操作系统控制线程 程序员代码用户控制协程
    协程的本质就是一条线程
    线程对于IO操作的感知力更强 :打开文件 网络操作 时间模块
    协程对于IO操作的感知力弱很多 :网络操作 时间操作
    文件操作频繁的情况下 协程无法规避掉这部分io操作
    协程有哪些模块?
    gevent
    acyncio :aiohttp sanic

    C10K :connect 101024 = 1w并发
    C10M :connect 10
    1024*1024 = 1000w并发
    负载均衡 nginx
    分布式 celery

  • 相关阅读:
    初探Object Pascal的类(一)
    初探Object Pascal的类(二)
    强制类型转换(Casting)
    初探Object Pascal的类(三)
    子界类型(Subrange types)
    浅析枚举类型(Enumerated types)
    指针(Pointer)
    浅谈WEBGIS运用栅格地图实现原理[更新:Google Maps带来的新型WebGIS设计模式]
    算我给Google本地和E都市做个广告吧
    Google地图的配色问题(以及MapBar和51ditu)
  • 原文地址:https://www.cnblogs.com/Doner/p/11425681.html
Copyright © 2020-2023  润新知