V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  exiledkingcc  ›  全部回复第 3 页 / 共 3 页
回复总数  47
1  2  3  
2019-04-09 16:40:03 +08:00
回复了 aoscici2000 创建的主题 Python Python 中怎么使用 async 写一个协程函数
你没搞清楚异步是什么。
比如一个函数 f 需要执行 a,b,c 三个步骤操作,耗时比如是 1ms,100ms,1ms。其中 b 是 io 操作,比如网络请求,需要等待结果返回。而需要执行多个 f()。同步的情况就是:
a();b();c();a();b();c();一共需要 204ms。
异步的情况就是:
a();b(),然后 b()中阻塞了,直接返回,开始执行第二个任务的 a(),b(),第二个 b()也阻塞了,然后就等待 io 完成,再然后执行后面的。一共需要 105ms。
异步不是“同时执行”,而是原来同步需要等待 io,异步下可以去执行其它的 cpu 任务,这样就节约了原来浪费掉的 cpu 时间。看上去像是“同时执行”,实际上是“同时等待”,cpu 执行时间没法减少。
asyncio.sleep 实际上就是让出 cpu 去执行别的任务,某个时间后再唤醒。
2019-03-29 16:25:28 +08:00
回复了 kidteaing 创建的主题 程序员 如何设计一个程序员都不知道执行时机的定时计划?
@no1xsyzy @kidteaing
hash 这个方案确实存在这样的问题,我还是觉得前面随机的方案最好。
2019-03-29 16:01:58 +08:00
回复了 kidteaing 创建的主题 程序员 如何设计一个程序员都不知道执行时机的定时计划?
还可以设计一个函数 F(X),使它满足对于任意输入,在有限次的迭代后会得到一个确定值 K。比如“ 3x+1 ”问题。
这个可能需要设计使得这个有限次不超过一个固定的值,毕竟这里要求 30 天之内。
方案就是这样:
1.对于每个任务生成一个随机数
2.然后以一定的速度遍历所有的任务的随机值,进行迭代
3.如果结果为 K,则执行任务,否则存下结果,后面继续迭代。
2019-03-29 15:54:40 +08:00
回复了 kidteaing 创建的主题 程序员 如何设计一个程序员都不知道执行时机的定时计划?
很简单的方案。
1,生成一个随机时间,以秒为单位。
2,加盐并且 hash
3,每一秒计算对比。
不过可能存在性能问题,不过看题目描述的数量量并不大。
或者改进一下,先按小时 hash,每个小时先筛选一部分,再每一秒去对比。
2019-01-07 10:23:52 +08:00
回复了 masker 创建的主题 Linux Ubuntu 被突然断电关机后无法进入登录界面
可以先禁用 NetworkManager 看看
sudo systemctl disable NetworkManager.service
然后看 log 找 NetworkManager 失败的原因
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1245 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 18ms · UTC 17:47 · PVG 01:47 · LAX 10:47 · JFK 13:47
Developed with CodeLauncher
♥ Do have faith in what you're doing.