一个同事和我说线程间不会切换

2019-11-09 16:36:30 +08:00
 pompeii

争论了很久,现在心情不太好。我开始怀疑自己了。

5424 次点击
所在节点    程序员
30 条回复
lcdtyph
2019-11-09 16:38:05 +08:00
有上下文吗?线程不切换的话多线程的意义在哪里
wakan190
2019-11-09 16:47:08 +08:00
光争论有啥用,做实验啊
pompeii
2019-11-09 16:53:50 +08:00
@lcdtyph #1 公司用 Python,标题中的同事为 B,我和一个同事 A 在讨论一个用了多线程的功能,我说现在用了多线程,几个涉及到 IO 的地方都被优化了,A 说能不能做到并行的效果(类似的意思),我说有锁要想其他的办法,然后我们继续 balabala,之后休息的时候 B 和我说,现在没有到那么高的层级,不用考虑 GIL,balabala 一大堆,说多线程怎么怎么样,然后就说出了线程间不会切换,我们争论了一会,我放弃了
pompeii
2019-11-09 16:59:38 +08:00
@wakan190 #2 说不服他的,我放弃了,不想折腾了
iyaozhen
2019-11-09 17:05:58 +08:00
@pompeii 还是感觉你问题没说清楚呀

多线程切换也是 CPU 的事,你业务上确实不用关心切不切换。
labnotok
2019-11-09 17:09:28 +08:00
Python 的多线程对高 IO 并发还是有一些作用的,
但是用 CPython 就别想着并行了。

老老实实上多进程+协程不行吗
pompeii
2019-11-09 17:13:14 +08:00
@iyaozhen #5 确实没说太清楚。现在想想,他的核心问题就是,觉得在 CPython 中,多线程是并行的。
pompeii
2019-11-09 17:15:04 +08:00
@labnotok #6 明白这些,主要分歧就出在,他觉得 CPython 中多线程是并行的,我觉得不是。线程切换只是讨论时候提到了一句。
iyaozhen
2019-11-09 17:17:15 +08:00
@pompeii 宏观上看着确实是“并行”的。微观上 GIL 也没想象中的那么可怕。实在不行多起几个进程实例嘛,到了堆机器都不能解决的时候才真是大问题、大场景了
tabris17
2019-11-09 17:24:40 +08:00
如果是计算密集型应用,因为 GIL 的关系,无法并行计算,但是 IO 还是可以并行的
dbw9580
2019-11-09 17:33:31 +08:00
并行( parallel )和并发( concurrent )的争议?
reallynyn
2019-11-09 17:57:55 +08:00
在类 uinx 系统中,线程就是进程,只不过同进程的线程地址空间共享。所以可能出现一个进程内的多个线程同时在不同核心内执行的情况。锁就是为了解决同时读写问题发明的。
pompeii
2019-11-09 19:11:59 +08:00
@reallynyn #12 受教了
pompeii
2019-11-09 19:12:42 +08:00
@dbw9580 #11 恩,准确来说是‘CPython 多线程是并行还是并发’的争议
pompeii
2019-11-09 19:16:41 +08:00
@iyaozhen #9 恩,现在想想,可能和同事在考虑的范围上不一样
xduanx
2019-11-09 19:22:15 +08:00
老罗和王自如争论的时候也是这样,
我不是说你和和同事就像他们俩,
我是说有时候争论不是为了真理,而是为了表面的胜负。
wazon
2019-11-09 19:23:19 +08:00
计算密集型想 python 搞并行,一般写成多进程而非多线程
akira
2019-11-09 22:09:02 +08:00
这种最好判断的了啊,写段代码跑一跑 谁对谁错 一目了然
Leigg
2019-11-09 23:23:38 +08:00
多进程是并行。
nullllllllllllll
2019-11-09 23:27:20 +08:00
理性讨论到最后都是诉诸立场和动机,太认真你就输了

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

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

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

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

© 2021 V2EX