首页   注册   登录
 lolizeppelin 最近的时间轴更新

lolizeppelin

V2EX 第 239732 号会员,加入于 2017-07-11 18:20:07 +08:00
Flutter 发了 Stable 居然没人讨论
问与答  •  lolizeppelin  •  9 天前  •  最后回复来自 PDX
27
phpadmin 有没有 PHP 或 go 之类版本的?
Python  •  lolizeppelin  •  164 天前  •  最后回复来自 lolizeppelin
14
Promise 中如何 sleep(不是实现 sleep)
程序员  •  lolizeppelin  •  171 天前  •  最后回复来自 wangjie
20
看见一个新出的 react 的后台框架
程序员  •  lolizeppelin  •  172 天前  •  最后回复来自 lolizeppelin
6
浏览器端 js 的 socket 都藏哪去了
  •  1   
    JavaScript  •  lolizeppelin  •  244 天前  •  最后回复来自 tommyZZM
    40
    js 算文件 md5 咋那么慢?还是我写法有问题
    问与答  •  lolizeppelin  •  245 天前  •  最后回复来自 tommyZZM
    3
    请问 es6 有什么漂亮的方式实现默认值
    程序员  •  lolizeppelin  •  257 天前  •  最后回复来自 sunnygaofan
    9
    react-router 的路由怎么同步加载.....
    程序员  •  lolizeppelin  •  258 天前  •  最后回复来自 meszyouh
    4
    lolizeppelin 最近回复了
    asyncio 的不知道

    具体怎么做看自己需求,常见的两种

    1. release 的时候创建一个新的协程, 这个协程的内容是 switch 到 lock 的协程
    这样当前协程会继续执行剩下代码.lock 的协程排序 key 是当前的时间点, 调度排位会在前面因为 io 切换的协程之后

    2 release 的时候创建一个新的协程, 这个协程的内容是 switch 到当前协程, 然后立即切换到 lock 的协程
    这样 lock 的协程会直接被激活, 当前协程剩余代码被调度到以后再继续执行

    asyncio 常规采用那种看他代码怎么写的就是
    不一定会切换到主循环的协程

    有可能是 release 的时候直接切换到 lock 的协程

    看你怎么用的 原理就那样

    你可以简单理解为未结束的协程之间 goto 来 goto 去
    @wcsjtu

    不是... eventlet 里的 sleep 和一般的 sleep 都一个作用
    用于放弃资源占用 和 epoll 无关

    epoll 的作用是在 io 的时候自动切换到主循环那个协程,猴子补丁也就是让你不用自己写 epoll 代码而已

    举个例子
    os.listdir 如果扫描一个大文件夹,当前协程会一直占用资源 不会切换到主线程. 其他协程就不会被调度到,会被饿死
    所以用 os.walk 来扫文件夹并加入计数器. 计数器超过一个值就调用 eventlet.sleep(0)切换到主线程


    所以你不要光盯着 io, io 耗时,大量计算也会耗时的.自然需要有放弃占用的方法的

    同样设计在 lock 里 lock 了就切换到主循环 release 就找有 lock 需要的协程切换过去

    tornado 以前是怎么做的我不清楚, 至少 gevent evelet 应该是这样的 asyncio 应该也是差不多的
    因为要解决的问题是一致的
    补充下

    所有的 io 都是 都是其他协程切换到主线程的哪个协程
    sleep 也是其他协程切换到主线程的那个协程
    主线程的那个协程主要负责调度

    release 可以是协程间互相切换也可以是切换到主线程那个协程
    asyncio 不熟,但是应该和 eventlet 原理一致

    在 eventlet 里
    有一个队列一直在不停的排序,排序的 key 是时间戳

    主循环一直扫这个队列, 当前时间戳>=排序 key 就调用这个 key 对应的协程

    所有的协程都是在这个队列里排序等待执行...协程的 sleep 就是修改排序的时间戳让自己的调度顺序押后

    lock 也是类似原理


    你对应到 asyncio 里看看调度是不是这个理
    @miniyao
    你不贴代码怎么帮你

    谁懂你代码里做了啥影响了进程
    @richzhu

    和航空母舰有毛线关系
    压缩这频繁计算的频繁复制 buf 的
    python 又不能用多核还跑到一个进程里
    你这要么进程不干活了 要么压缩死慢
    python 这种不能用多核的渣渣 压缩不想办法 fork 到其他进程里干 你想卡死当前进程么

    再说了 python 性能这么烂 需要经常压缩的话直接 shell 执行是性能最好的, 条件允许能不用 native 代码去压缩就不要用 python 去压文件
    6 天前
    回复了 sfree2005 创建的主题 Flutter Flutter live 讨论
    嵌套还好吧 不嵌套就写一堆 xml 还不是一样 2333
    哪个行业不是靠销售............游戏还不一个卵样
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1711 人在线   最高记录 4019   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 20ms · UTC 16:12 · PVG 00:12 · LAX 08:12 · JFK 11:12
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1