sujin190 最近的时间轴更新
sujin190

sujin190

🏢  南京
V2EX 第 36127 号会员,加入于 2013-03-19 10:01:03 +08:00
今日活跃度排名 833
分享一下完全不依赖 asyncio 也支持异步语法的库
Python  •  sujin190  •  11 天前  •  最后回复来自 sujin190
59
关于老式两线电话门铃智能化改造
分享创造  •  sujin190  •  104 天前  •  最后回复来自 sujin190
29
import 懒加载为啥性能低
Python  •  sujin190  •  220 天前  •  最后回复来自 sujin190
4
分享几个简单易用的代理转发命令行工具吧
分享发现  •  sujin190  •  2020-07-14 18:30:02 PM  •  最后回复来自 byzf
10
关于丰巢快递柜刷脸取件侵犯用户隐私问题
问与答  •  sujin190  •  2019-11-09 15:59:51 PM  •  最后回复来自 taobibi
41
sujin190 最近回复了
设计复杂度啊,大哥,两个都要那就两个都性能底,还开关,想太多了,而且 Python 强大的 C 扩展,谁给你兼容,多线程编程本来就复杂,重新设计解释器干掉 gil 不是啥难事,但是要在通用场景下取得更好性能以及对现有模块和 C 扩展有良好兼容可就难了,而且以 Python 的主要使用场景来看,干不干掉 GIL 其实意义不大,反正 Python 做出的牛逼的东西像 tensorflow 都是 C 或者 C++扩展的本来就不受 GIL 限制,否则有 ironpython 和 jython 你看如何
3 天前
回复了 monetto 创建的主题 Python Python 中 有 CAS 的实现吗
@dingyaguang117 好吧,纠正一下,数字加法指令会返回新的数字对象,所以保存这个字节码在多线程下这种情况就不是线程安全的了
3 天前
回复了 monetto 创建的主题 Python Python 中 有 CAS 的实现吗
@dingyaguang117 其实 dict 迭代器生成,删除其实就一天字节码指令,线程安全的逻辑并没有改变,a=a+1 应该是三条指令,加载、计算和保存,事实上除了计算,前两条指令不会有副作用,加法因为内存结构是指针操作,这么看其实这个其实也没有并发安全问题,但是大多数情况下这个操作需要加锁,估计是后面大概率就是判断语句,而这两之间就不是线程安全的了吧
3 天前
回复了 monetto 创建的主题 Python Python 中 有 CAS 的实现吗
@dingyaguang117 Python 解释器也需要用内存,也有数据结构啊,编译,创建类,模块导入,线程创建,文件操作,套接字这些底层也是用 GIL 保证线程安全的吧
4 天前
回复了 monetto 创建的主题 Python Python 中 有 CAS 的实现吗
@monetto #39 Python 的 GIL 就是用来保证内部数据结构线程安全的,否则直接删掉 GIL 就是了啊,所以肯定必须要求是单条字节码完整执行完成才能切换,不可能像操作系统线程一样时间一到啥都不管就直接切换吧,否则 Python 内部自身的数据结构都有可能被破坏了,从这一点上来说,GIL 保证单条字节码的完整性,确实提供了大量线程安全的操作,比如赋值,不能说毫无关系吧
4 天前
回复了 monetto 创建的主题 Python Python 中 有 CAS 的实现吗
def f():
...: a=1
...: b=a


2 0 LOAD_CONST 1 (1)
2 STORE_FAST 0 (a)

3 4 LOAD_FAST 0 (a)
6 STORE_FAST 1 (b)
8 LOAD_CONST 0 (None)

@junkun #26 一个赋值语句两条字节码组成,以 Python 的内存结构来说,其实就算被拆开其实越不会有副作用,所以认为是原子操作其实也没有啥问题
5 天前
回复了 monetto 创建的主题 Python Python 中 有 CAS 的实现吗
@abersheeran #19 确实了,Python 上 CAS 确实是为了 CAS 而 CAS 了,毕竟 GIL 限制了,不过如果你搞个扩展释放掉 GIL 的话就可以搞了
5 天前
回复了 monetto 创建的主题 Python Python 中 有 CAS 的实现吗
@est #17 最简单一条赋值语句一般有三条 bytecode 组成,单条 bytecode 是线程安全的,多条之间不是,你可以用 dis 显示下编译出的 bytecode 就知道了
5 天前
回复了 monetto 创建的主题 Python Python 中 有 CAS 的实现吗
@abersheeran #16 但这个实现没啥现实意义啊,CPU 级 CAS 的价值是在多核中,CAS 可以通过占用少量 CPU 时间来换取通过更重度的锁来导致线程休眠切换调度的问题,同时还可以最大限度保护内核缓存失效的问题,毕竟现代 cpu 和缓存速度太快了,但是你在 Python 层面做一个这东西似乎啥都没解决吧,没啥意义确实没啥提供的必要
5 天前
回复了 teliang 创建的主题 问与答 PVE 安装 OpenWrt 时,如何调整磁盘大小
可以考虑创建一个你需要大小的虚拟磁盘文件,然后把这个虚拟磁盘文件挂在到一个现有的虚拟主机上,之后用 dd 直接吧 openwrt 写入该虚拟磁盘,这样就安装好 openwrt 系统了,以该磁盘创建 openwrt 虚拟主机启动后,再用正常的磁盘扩容指令扩容 openwrt 文件系统到整个虚拟磁盘大小就行了,用动态扩容话还可以创建一个超大的

而且似乎直接镜像导入或者转虚拟磁盘文件的,后续在 openwrt 系统中在线升级似乎老是会出错,估计这样安装应该是正常的了,和物理磁盘上安装方式是一样的
关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1187 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 23ms · UTC 18:37 · PVG 02:37 · LAX 11:37 · JFK 14:37
♥ Do have faith in what you're doing.