V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wwqgtxx  ›  全部回复第 20 页 / 共 192 页
回复总数  3836
1 ... 16  17  18  19  20  21  22  23  24  25 ... 192  
2019-07-25 23:21:36 +08:00
回复了 xianhu 创建的主题 Python 关于 Python 多线程的一个疑问,见笑!
@hhhsuan 多进程来传递个 FD 看能不能把你搞疯掉
2019-07-25 20:45:48 +08:00
回复了 rainto 创建的主题 Python asyncio 批量获取需要 await 的对象为空,请表哥们指教
@rainto aiohttp 的 response 是惰性读取的,也就是只有你在 await resp.read()的时候才会真正的从 TCP 缓冲区读取,当你关闭这个 resp 的时候,http 连接已经关闭,就不可能读到数据了
当然你 await response 有什么用,这样既不会真正的读取,aiohttp 的 response 对象也不是可重用的,你只能自己 new 一个 dict 来把 resp 中你想要的数据保存出来,再 append 进 res
2019-07-25 20:41:21 +08:00
回复了 xianhu 创建的主题 Python 关于 Python 多线程的一个疑问,见笑!
其实一个操作是不是原子的有两种评判标准:
1、对于纯 Python 代码,是不是只有一条 byte code
2、对于 C 实现的函数,内部有没有释放 GIL
2019-07-25 20:37:02 +08:00
回复了 xianhu 创建的主题 Python 关于 Python 多线程的一个疑问,见笑!
@jingxyy @xianhu python 官方文档提到了在 cpython 的实现中 list 的 append 是原子的
https://docs.python.org/3.7/faq/library.html#what-kinds-of-global-value-mutation-are-thread-safe
2019-07-24 16:51:53 +08:00
回复了 itgoyo 创建的主题 问与答 网上出售的几十块钱无限流量卡或者是 100G 那种是真的吗?
@worldtongfb 有种服务叫 拜访地接入 ,不过不是每个套餐都能开
2019-07-24 09:19:13 +08:00
回复了 lixyz 创建的主题 Java Java 中, HashMap 扩容可以避免吗?
@xuanbg 很多情况下,复制产生的代价会小于链表带来的读取损耗,你说的这种结构类似于 c++ stl 的 std::deque,但是在读取较多的负载下性能比 std::vector 差了不少
2019-07-24 00:42:50 +08:00
回复了 akazure 创建的主题 问与答 关于 itx 外置机械硬盘放置问题
@whatIsGhost @loading
酷鱼家有些小机箱是只能放下一个 2.5 的,这个并不奇怪,itx 本来就是为啥追求极限的体积,要不然干嘛不配个 atx 机箱
2019-07-24 00:39:50 +08:00
回复了 waibunleung 创建的主题 Python 不死心,再来问一遍关于 Python 的 asyncio 问题
@wwqgtxx 修正一下,是
____loop.call_soon(_run,a,loop)
这里会发现 call_soon 传入的参数是个普通函数而不是一个 coroutine,为什么这么设计就很有意思了
2019-07-24 00:35:52 +08:00
回复了 waibunleung 创建的主题 Python 不死心,再来问一遍关于 Python 的 asyncio 问题
@waibunleung 如果你仔细看过 EventLoop 的实现代码,你会发现其实 asyncio 内部很喜欢用在一个函数结尾调用 call_soon 的方式实现循环,比如
def _run(a,loop):
____if a == XXX:
________干一些事
____else:
________干另一些事
____loop.call_soon(a,loop)
____return
这样实现的代码虽然看起来复杂,可能能让你更明白事件循环的执行过程
2019-07-23 23:54:25 +08:00
回复了 waibunleung 创建的主题 Python 不死心,再来问一遍关于 Python 的 asyncio 问题
@zzth370 其实可以用一个比较简单的方式解释,await 导致了 task 切换,但是 create_task 之后这个 task 已经放进等待列表,所以在 main task 中 await 任何 future 都会导致 worker 被执行,至于 worker_1 和 worker_2 的执行循序,这个就要看 EventLoop 的具体实现了
2019-07-23 23:50:14 +08:00
回复了 akazure 创建的主题 问与答 关于 itx 外置机械硬盘放置问题
@akazure 我买的 199 的
2019-07-23 21:03:11 +08:00
回复了 akazure 创建的主题 问与答 关于 itx 外置机械硬盘放置问题
10 口工业 usb3.0 hub,带外置供电的
2019-07-23 15:24:31 +08:00
回复了 waibunleung 创建的主题 Python 不死心,再来问一遍关于 Python 的 asyncio 问题
@j0hnj 我自己学习的时候是用 yield 和 yield from 手写了一个协程的实现(在 py3.4 的时候,那是 asyncio 还未加入标准库),不过理解的根源还是写“多任务”的单片机程序😂
2019-07-23 11:52:42 +08:00
回复了 waibunleung 创建的主题 Python 不死心,再来问一遍关于 Python 的 asyncio 问题
@waibunleung 有个建议,你可以尝试自己实现一下如何在单线程下完成“多任务”,基本上就是楼上所说有限状态机,很多单片机程序就是一个大的 while 循环套几组 switch,一组 switch 就是一个 task,每个 switch 的 flag 是一个标志量,内部执行到需要等待的时候就把 flag 值改成下一个代码块,随后主动退出,去让下一组 task 执行,这样实现“伪并发”。当然由于单片机的程序单一,硬件资源极为有限(很多单片机 ram 只有 1kb 甚至更小),这里的 task 是写死的。而 python 中相当于每次 while 循环的时候从队列头取出一组 switch(task)来执行,执行完后再进行下一轮 while (还有些 io 相关的操作暂时省略)
2019-07-23 11:45:01 +08:00
回复了 waibunleung 创建的主题 Python 不死心,再来问一遍关于 Python 的 asyncio 问题
@rocketman13 根据 python 的协程实现原理,只有在一个 coroutine 主动调用 await 或者 return 的时候才会发生 task 切换,虽然这里的 await task1 的目的是为了等待 task1 结束,但如果你在主 task 中永远不 await 任何一个 future 或者 return 的话(比如跑个死循环),其他 task 是永远不会被执行的。这点和线程可以剥夺式调度完全不同。( ps: python3.6 开始是可以检测一个 coroutine 执行了太长时间而发出警告的,但仍然不可主动剥夺)
2019-07-23 11:37:38 +08:00
回复了 waibunleung 创建的主题 Python 不死心,再来问一遍关于 Python 的 asyncio 问题
@waibunleung 作为事件循环,当你 await task1 把控制权交还的时候,这一轮循环已经结束,随后立即开始下一轮的事件循环,检查有没有其他任务这已经是下一轮循环干的事了
2019-07-23 07:47:04 +08:00
回复了 ufjfeng 创建的主题 Apple iOS 12.4 发布了
@billytom 不支持
2019-07-22 22:51:04 +08:00
回复了 waibunleung 创建的主题 Python 不死心,再来问一遍关于 Python 的 asyncio 问题
@waibunleung 关于__step 这个地方可能看一下 Python 的生成器那块会有更深的了解,最初的 asyncio 就是用生成器完成的,只是在后续版本中才逐步把 coroutines 和 generators 分离了,后续版本还有了异步生成器的概念,这些内容你可以看一下相关 PEP 文档,那里有解释为什么会采用这样的设计。
https://www.python.org/dev/peps/pep-0492/
https://www.python.org/dev/peps/pep-0525/
2019-07-22 20:52:15 +08:00
回复了 waibunleung 创建的主题 Python 不死心,再来问一遍关于 Python 的 asyncio 问题
讲道理,我在你上一个问题的#14 和#16 已经分析过 task 在 init 是怎么把自己放进 eventloop 了,核心点还是在于 call_soon

另外你提到的 pycharm 跳转到 pyi 文件的问题,那个 pyi 只是用来做类型标记的,并没有具体的实现,如果你想看到实现可以临时去 pycharm 的用户目录把包含 pyi 的目录暂时移走就能进入真正的.py 文件了。
上面提到了有一部分 eventloop 会涉及到 c 代码,其实那大部分是涉及到怎么 pull 一个 fd 的,并不影响你阅读了解 asyncio 模块的工作原理。对于一个 SelectorEventLoop 是可以纯 python 代码实现的( python3.5 的就是纯 py 代码实现),c 代码只是为了优化性能,大部分情况下源码中还有有纯 python 的替代实现,你可以仔细看看
1 ... 16  17  18  19  20  21  22  23  24  25 ... 192  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2896 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 12:34 · PVG 20:34 · LAX 05:34 · JFK 08:34
Developed with CodeLauncher
♥ Do have faith in what you're doing.