V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ipwx  ›  全部回复第 71 页 / 共 200 页
回复总数  3996
1 ... 67  68  69  70  71  72  73  74  75  76 ... 200  
2021-05-18 13:00:17 +08:00
回复了 LeeReamond 创建的主题 Python Python 的 gil 到底解决了什么具体的问题?
@LeeReamond 参见楼上 “如果 C 扩展要显式释放 GIL,那么该扩展就需要自行保证线程安全”
2021-05-18 01:24:26 +08:00
回复了 LeeReamond 创建的主题 Python Python 的 gil 到底解决了什么具体的问题?
…… 所以其实 Python 成也“胶水”败也“胶水”。C 扩展库能这么容易访问 Python 底层的东西是个优势,可以迅速做一些系统层面的 API 调用、融合 C/C++ 做科学计算( PyTorch,NumPy,或者 GPU 计算),或者在暴露 C/C++ 写的核心算法为 HTTP API 。但是同样的,这个优势也让 Python 在普通的多线程网络服务器上寸步难行。

我的看法是,Python 干好科学计算这方面的事情就行了。还有就是干好工具型胶水语言该做的事情,在性能无关的领域放光(比如运维)。科学计算本来就计算密集型,本来就要独占核心一直跑,根本不会有线程上下文切换。网络服务交给专业的,比如 Go,Java,C++ 什么的。多好。。。
2021-05-18 01:20:01 +08:00
回复了 LeeReamond 创建的主题 Python Python 的 gil 到底解决了什么具体的问题?
说的更明确一些:哪怕 C 扩展库对自己的逻辑进行了加锁,但是由于要访问 Python 对象,进一步使用 Python 解释器的东西,它防止不了外面的代码同时访问相同的对象,然后就崩溃了。。。

所以面对 C 扩展库,GIL 喊了这么长时间都搞不掉。
2021-05-18 01:12:24 +08:00
回复了 LeeReamond 创建的主题 Python Python 的 gil 到底解决了什么具体的问题?
1. Python 解释器层面的一些锁。这个其实想要优化总能优化的。
2. 保护 C 扩展模块,这方面是挺蛋疼的。

Python 生态半壁江山是 C 扩展库撑起来的,丢掉这部分江山等于自废武功。为了支持无锁而去掉 GIL 等于丢掉所有这些库,做网络应用的是爽了,但是 Python 就分裂了。
2021-05-17 22:19:07 +08:00
回复了 OkOObd 创建的主题 职场话题 如果在国内彻底躺平会怎么样?
lz 可能不知道,北京上海的平均工资不到 1 万,更别提中位数了
@missder @chaowang C++ 的一些评论见我上面的楼。

另外编辑器的问题,我觉得是作者设计上和实现上偷懒了。C++ 最快的写法写起来还挺累人的,各种奇迹淫巧那不是炫技,而是用了就比 C 快,不用就比 C 慢很多。我写 C++ 经常不开优化比开优化慢 5 ~ 10 倍。

另外面向优化写代码必须消除 warning,任何 C++ 标准未定义行为都要绕道走。网上不也很多段子,什么什么公司的代码一开优化就崩溃么 2333 。
@pkookp8 C++ 追求的 zero-cost abstract,template 大法超级给力。

举个例子,std::sort(vec.begin(), vec.end(), [&](const auto& lhs, const auto& rhs) { return lhs < rhs; });

这里的比较器直接被 C++ 编译器内联了(开 -O2 )。如果是 C 语言版本的快排:

bool fn(const void* a, const void *b)
qsort(..., &fn);

函数指针丢进去。除非给每个函数写特殊规则(比如 qsort 是库函数说不定还有机会),一般函数根本没有内联优化的可能性。

====

再比如 C++ 17 的各种骚操作,例如:

inline constexpr size_t pow2(int n) { return n == 0 ? 1 : 2 * pow2(n-1); }

...

template <int N>
if constexpr (pow2(N) > 1024) {
... branch A
} else {
... branch B
}

这段代码,pow2 和 constexpr 都是编译期就确定的行为,不会在运行时计算。
2021-05-14 15:49:51 +08:00
回复了 AllenHua 创建的主题 摄影 想重新买个相机,求入门全画幅微单推荐
@AllenHua 2333 原来是直出,那只能佳能了。

你比如我,一般都后期的。(说实话调个色也就五分钟十分钟)。索尼大法的宽容度实在是好啊,有一天我拿着 a7r4,旁边另一个人拿着佳能不知道哪一款反正不是最近的,然后 ido 是室外漫展,光比强烈。然后。。。他发现他相机不行了。
2021-05-14 15:11:33 +08:00
回复了 king666wyx 创建的主题 问与答 未来程序员的出路在哪里,很迷茫
近十年是互联网 /程序员红利。程序员这种和教师、医生不一样,是没有绝对鉄饭碗的。
2021-05-14 14:39:21 +08:00
回复了 vicalloy 创建的主题 Python Python 终于决定要提升一下性能了
其实 Python 做数据分析,性能绰绰有余了。。。

你说要性能?我看了看这两个月写的 2 万多行 C++
2021-05-14 10:42:00 +08:00
回复了 passant520 创建的主题 成都 跟风问问成都,不 996 的数据科学工作机会多吗?
你还是找金融吧。互联网这种需求不太现实我觉得。。
渲染的水很深啊,OpenGL 和 DirectX 不是狼得虚名
2021-05-13 09:26:32 +08:00
回复了 ch2 创建的主题 程序员 在某大厂的朋友告诉我说,你想用台式机是不太可能的
vpn ?多一个 vpn 就多了一堆安全隐患好不好
那你的需求就是搜索引擎。。。直接找经典的信息检索教材就行。
2021-05-11 16:23:28 +08:00
回复了 lostSoul 创建的主题 MySQL 多租户系统,采用 PostgreSQL 好还是 Mysql 好
我直觉上,tenantId 是很好的方案。但是得配合分库分表,通过 tenantId 哈希到某个机器的数据库上,每个机器上又存储若干 tenantId 的数据。如果之前的数据库满了就增加机器,哈希函数改一改。如果某个租户变成狗大户就专门给他放到狗大户的机器上,狗大户的机器少放点租户,小用户的机器上多放点用户。
…… 合并的过程不仅要用二分,可能还要用优先队列。优先队列是为了 O(1) 确定哪个倒排索引的下一个元素是最前面的,二分是为了跳过某个倒排索引因为太靠前了和别的倒排索引根本不可能相交的位置。
最后补充一句:因为倒排索引是根据位置排序的,多个倒排索引 + 不能超过 20 个字符误差范围这个条件能快速进行多路倒排索引的合并。合并过程可以用二分。。。总之是挺复杂的一个程序,但可以很快。
筛选这一步太麻烦了,楼下贤者可以补充。
1 ... 67  68  69  70  71  72  73  74  75  76 ... 200  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5397 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 45ms · UTC 08:13 · PVG 16:13 · LAX 01:13 · JFK 04:13
Developed with CodeLauncher
♥ Do have faith in what you're doing.