Python 中 有 CAS 的实现吗

2021-10-18 11:33:15 +08:00
 monetto

Google 了一下 "Python" "CAS",只是搜到了一些关于 GIL 的 ATOMIC 操作。

但是觉得 Python 的 Lock() 又有点沉,有大佬知道有没有类似 CAS 的轻量级实现吗?

5328 次点击
所在节点    Python
51 条回复
sujin190
2021-10-18 15:59:39 +08:00
@abersheeran #19 确实了,Python 上 CAS 确实是为了 CAS 而 CAS 了,毕竟 GIL 限制了,不过如果你搞个扩展释放掉 GIL 的话就可以搞了
sampeng
2021-10-18 16:15:38 +08:00
看完讨论。。我以为是 CAS 单点登录,我还纳闷这有啥好讨论的。。。落伍了落伍了
fgwmlhdkkkw
2021-10-18 16:17:27 +08:00
搜 atomic 好像有几个,试试看?
woctordho
2021-10-18 17:03:12 +08:00
我还以为是 computer algebra system,差点开始安利 SageMath (
abersheeran
2021-10-18 17:09:17 +08:00
@sujin190 搞扩展那也是别的语言了,一般是 C,C 的 CAS 这资料还不到处都是,可以说跟 Python 一点关系都没有了。哈哈哈。
junkun
2021-10-18 19:57:03 +08:00
yunluw
2021-10-18 20:57:02 +08:00
此贴前三楼以自己为示范展示了不加控制的人类本性
dingwen07
2021-10-18 21:50:29 +08:00
点击来之前以为是计算机代数系统
guoli100
2021-10-18 22:36:11 +08:00
@dingwen07 我第一眼也以为是说计算机代数系统
2i2Re2PLMaDnghL
2021-10-18 22:39:46 +08:00
@securityCoding 设计模式的影子就不叫设计模式。设计模式的全部想法都是在(拙劣、错误且反思考地)尝试提取习惯性操作并为之取个名字。
你这就好比大多数语言给 a=1 取个名字叫「赋值」,然后说『( Haskell 的) let a=1 in ... 有赋值的影子』,这说明你被词汇和词义限制住了思想。
Hstar
2021-10-18 22:51:20 +08:00
据我所知,Python 只有.append() 是 aotmic 的,有点小坑但是有 GIL 了
imycc
2021-10-18 23:01:31 +08:00
恕我孤陋寡闻,python 确保线程安全的一般手段应该就是 threading.Lock,还真没见过其他方式
Jooooooooo
2021-10-18 23:11:25 +08:00
@dqzcwxb 有毒. 楼主完全没提 java 你 1L 莫名其妙来个喷 Java?
future0906
2021-10-19 00:19:58 +08:00
@Trim21 不是,你就好好学学啥是 GIL 。threading.Lock 主要是保证 PythonVM 外的临界区的。
Trim21
2021-10-19 00:33:37 +08:00
你可以直接说你想表达的东西
Trim21
2021-10-19 00:33:49 +08:00
@future0906 #34 你可以直接说你想表达的东西
msaionyc
2021-10-19 08:30:33 +08:00
1 楼这种真的是毒瘤,立个靶子自己打,败坏社区氛围,引战
dingyaguang117
2021-10-19 09:25:33 +08:00
@future0906 真的吗?有了 GIL 什么都不用考虑了?
monetto
2021-10-19 10:30:31 +08:00
@dingyaguang117 Python2 中 GIL 是运行 1000 行字节码,然后切换线程,Python3 是 15 毫秒切换线程。GIL 跟线程安全根本毫无关系,除非你能精准的控制字节码的数量。其次就是,dict.append,list.pop 这种 C 语言调用实现,是 Atomic 的。
monetto
2021-10-19 10:35:18 +08:00
@monetto dict 没有 append,说错了,remove

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/808500

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX