V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  sujin190  ›  全部回复第 39 页 / 共 122 页
回复总数  2429
1 ... 35  36  37  38  39  40  41  42  43  44 ... 122  
2021-11-02 14:20:52 +08:00
回复了 evan0724 创建的主题 Go 编程语言 golang 一个函数返回不同的结构体有比较优雅的实现吗
声明一个 interface 呗,MysqlConfig 和 MongoConfig 都实现这个接口不就好了
2021-11-01 19:54:04 +08:00
回复了 dzdh 创建的主题 问与答 无锁化编程就是不用事务吗
无锁化得是长流程分布式吧,都能用事务直接搞定了,还纠结要不要搞无锁化有点脱裤子放屁了吧,毫无意义的东西干嘛要做
2021-10-28 09:15:34 +08:00
回复了 sunnysab 创建的主题 问与答 收到学校要求下架学生服务相关的小程序
你直接存用户账户密码调学校系统,如果学校不同意小心按入侵计算机系统罪直接给你弄进去,他们要是较真还真不好说,所以还是想清楚
@O5oz6z3 #21 问题就在于解析器你能复制数据结构再搞一遍,但是那么多模块和扩展怎么办,你说的这种不仅有人想过还有人搞过,但是有个啥用,各种模块扩展都不兼容,那这样的 python 还有个啥用,现在 python 重要使用的场景中数学计算、web 、人工智能、爬虫,几乎都不受 GIL 影响,语言自身性能不高主要也不是 GIL 导致的,从这些来说搞掉 GIL 并不是一个十分重要的事情,从 Python 编译成执行的字节码来看,对比 GO 、Rust 这种的编译器优化水平,似乎 python 的编译器还是有改进的空间的,以及 jit 支持之类的显然收益更高吧
@hsfzxjy #13 不是可能存在,是必然是这样啊,除非你做个扩展完全不用 python 解释器的任何数据结构,否则就必须要用 GIL 保证安全,但是你不用任何 Python 解释器的数据结构,那 Python 也认不了你的扩展啊
@O5oz6z3 #3 大哥,这个又不是一个函数调完就完,各种数据结构,各种扩展都要加入支持,你用两个不同初始化方法有个啥用
设计复杂度啊,大哥,两个都要那就两个都性能底,还开关,想太多了,而且 Python 强大的 C 扩展,谁给你兼容,多线程编程本来就复杂,重新设计解释器干掉 gil 不是啥难事,但是要在通用场景下取得更好性能以及对现有模块和 C 扩展有良好兼容可就难了,而且以 Python 的主要使用场景来看,干不干掉 GIL 其实意义不大,反正 Python 做出的牛逼的东西像 tensorflow 都是 C 或者 C++扩展的本来就不受 GIL 限制,否则有 ironpython 和 jython 你看如何
2021-10-20 12:46:34 +08:00
回复了 monetto 创建的主题 Python Python 中 有 CAS 的实现吗
@dingyaguang117 好吧,纠正一下,数字加法指令会返回新的数字对象,所以保存这个字节码在多线程下这种情况就不是线程安全的了
2021-10-20 12:27:06 +08:00
回复了 monetto 创建的主题 Python Python 中 有 CAS 的实现吗
@dingyaguang117 其实 dict 迭代器生成,删除其实就一天字节码指令,线程安全的逻辑并没有改变,a=a+1 应该是三条指令,加载、计算和保存,事实上除了计算,前两条指令不会有副作用,加法因为内存结构是指针操作,这么看其实这个其实也没有并发安全问题,但是大多数情况下这个操作需要加锁,估计是后面大概率就是判断语句,而这两之间就不是线程安全的了吧
2021-10-20 12:18:15 +08:00
回复了 monetto 创建的主题 Python Python 中 有 CAS 的实现吗
@dingyaguang117 Python 解释器也需要用内存,也有数据结构啊,编译,创建类,模块导入,线程创建,文件操作,套接字这些底层也是用 GIL 保证线程安全的吧
2021-10-19 14:02:42 +08:00
回复了 monetto 创建的主题 Python Python 中 有 CAS 的实现吗
@monetto #39 Python 的 GIL 就是用来保证内部数据结构线程安全的,否则直接删掉 GIL 就是了啊,所以肯定必须要求是单条字节码完整执行完成才能切换,不可能像操作系统线程一样时间一到啥都不管就直接切换吧,否则 Python 内部自身的数据结构都有可能被破坏了,从这一点上来说,GIL 保证单条字节码的完整性,确实提供了大量线程安全的操作,比如赋值,不能说毫无关系吧
2021-10-19 13:58:08 +08:00
回复了 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 的内存结构来说,其实就算被拆开其实越不会有副作用,所以认为是原子操作其实也没有啥问题
2021-10-18 15:59:39 +08:00
回复了 monetto 创建的主题 Python Python 中 有 CAS 的实现吗
@abersheeran #19 确实了,Python 上 CAS 确实是为了 CAS 而 CAS 了,毕竟 GIL 限制了,不过如果你搞个扩展释放掉 GIL 的话就可以搞了
2021-10-18 15:55:36 +08:00
回复了 monetto 创建的主题 Python Python 中 有 CAS 的实现吗
@est #17 最简单一条赋值语句一般有三条 bytecode 组成,单条 bytecode 是线程安全的,多条之间不是,你可以用 dis 显示下编译出的 bytecode 就知道了
2021-10-18 15:52:35 +08:00
回复了 monetto 创建的主题 Python Python 中 有 CAS 的实现吗
@abersheeran #16 但这个实现没啥现实意义啊,CPU 级 CAS 的价值是在多核中,CAS 可以通过占用少量 CPU 时间来换取通过更重度的锁来导致线程休眠切换调度的问题,同时还可以最大限度保护内核缓存失效的问题,毕竟现代 cpu 和缓存速度太快了,但是你在 Python 层面做一个这东西似乎啥都没解决吧,没啥意义确实没啥提供的必要
2021-10-18 15:41:11 +08:00
回复了 teliang 创建的主题 问与答 PVE 安装 OpenWrt 时,如何调整磁盘大小
可以考虑创建一个你需要大小的虚拟磁盘文件,然后把这个虚拟磁盘文件挂在到一个现有的虚拟主机上,之后用 dd 直接吧 openwrt 写入该虚拟磁盘,这样就安装好 openwrt 系统了,以该磁盘创建 openwrt 虚拟主机启动后,再用正常的磁盘扩容指令扩容 openwrt 文件系统到整个虚拟磁盘大小就行了,用动态扩容话还可以创建一个超大的

而且似乎直接镜像导入或者转虚拟磁盘文件的,后续在 openwrt 系统中在线升级似乎老是会出错,估计这样安装应该是正常的了,和物理磁盘上安装方式是一样的
2021-10-18 15:35:31 +08:00
回复了 monetto 创建的主题 Python Python 中 有 CAS 的实现吗
CAS 是 cpu 指令级提供的冲突处理的,python 一个+1 操作都好多条 cpu 指令了,这个在 python 层面上来看已经毫无意义了吧
2021-10-15 14:49:16 +08:00
回复了 BenchWidth 创建的主题 微信 微信小程序,不同主体间的支付问题。
B 主体单纯收钱很有可能审核不过啊,没业务单纯收钱很有洗钱啥的嫌疑,不容易解释清楚,如果你说 A 和 B 绑定在一起的也有问题,B 主体如果没有 A 业务相关的资质的话是不能做 A 这样的业务的,估计也不会给你过,弄假内容欺骗审核那就等同于你小程序随时会被封,提心吊胆的你这业务还咋做啊
1 ... 35  36  37  38  39  40  41  42  43  44 ... 122  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5939 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 39ms · UTC 02:37 · PVG 10:37 · LAX 18:37 · JFK 21:37
Developed with CodeLauncher
♥ Do have faith in what you're doing.