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

争论了很久,现在心情不太好。我开始怀疑自己了。
1 lcdtyph Nov 9, 2019 via iPhone 有上下文吗?线程不切换的话多线程的意义在哪里 |
2 wakan190 Nov 9, 2019 via Android 光争论有啥用,做实验啊 |
3 pompeii OP @lcdtyph #1 公司用 Python,标题中的同事为 B,我和一个同事 A 在讨论一个用了多线程的功能,我说现在用了多线程,几个涉及到 IO 的地方都被优化了,A 说能不能做到并行的效果(类似的意思),我说有锁要想其他的办法,然后我们继续 balabala,之后休息的时候 B 和我说,现在没有到那么高的层级,不用考虑 GIL,balabala 一大堆,说多线程怎么怎么样,然后就说出了线程间不会切换,我们争论了一会,我放弃了 |
6 labnotok Nov 9, 2019 via Android Python 的多线程对高 IO 并发还是有一些作用的, 但是用 CPython 就别想着并行了。 老老实实上多进程+协程不行吗 |
9 iyaozhen Nov 9, 2019 via Android @pompeii 宏观上看着确实是“并行”的。微观上 GIL 也没想象中的那么可怕。实在不行多起几个进程实例嘛,到了堆机器都不能解决的时候才真是大问题、大场景了 |
10 tabris17 Nov 9, 2019 如果是计算密集型应用,因为 GIL 的关系,无法并行计算,但是 IO 还是可以并行的 |
11 dbw9580 Nov 9, 2019 via Android 并行( parallel )和并发( concurrent )的争议? |
12 reallynyn Nov 9, 2019 via iPhone 在类 uinx 系统中,线程就是进程,只不过同进程的线程地址空间共享。所以可能出现一个进程内的多个线程同时在不同核心内执行的情况。锁就是为了解决同时读写问题发明的。 |
16 xduanx Nov 9, 2019 老罗和王自如争论的时候也是这样, 我不是说你和和同事就像他们俩, 我是说有时候争论不是为了真理,而是为了表面的胜负。 |
17 wazon Nov 9, 2019 计算密集型想 python 搞并行,一般写成多进程而非多线程 |
18 akira Nov 9, 2019 这种最好判断的了啊,写段代码跑一跑 谁对谁错 一目了然 |
19 Leigg Nov 9, 2019 via Android 多进程是并行。 |
20 nullllllllllllll Nov 9, 2019 理性讨论到最后都是诉诸立场和动机,太认真你就输了 |
21 ClericPy Nov 9, 2019 比较赞同 16# 的看法, 感觉确实不是为了讨论问题, 就是在为了说服对方... 你俩好歹有一个明白人, 这争论就进行不下去, 具体讨论的是什么我也没看懂 不过我猜你放弃的原因大概是: 对方一个劲地用自己的知识面把你往他已知的领域里带, 而不是真的想讨论出问题的答案, 就像平时经常见到的回帖答非所问一样(讨论的明明是 python 里多线程会不会切换, 回的却是劝人用协程...), 遇到这种情况真的只能友好地表示赞同一下了 google 上随便搜个关键词 python multi-thread switch, 会看到很多相关的帖子讲这个, 第一个就提到切换频率问题了 "How often does Python switch threads? - Stack Overflow". 简单的说协程就是用户态主动切换, 多线程靠一个类似于 checkinterval 的方式来不断切换(一般是遇到 IO 之类的阻塞). 所以我的理解就是, 就算是只能利用单个 CPU, 但是多个线程是会切换的, 切换的时候有个地方暂存运行状态相关的 context 和 栈信息. |
22 also24 Nov 10, 2019 |
23 mskf Nov 10, 2019 他不知道有 scheduling 这个东西吗 |
24 no1xsyzy Nov 10, 2019 |
25 waytoexplorewhat Nov 10, 2019 via iPad 是怎么不会切?看了相关知识之后,还是没能了解并运用,还是说之前并没有接触过,所以不会切。 |