如果一个程序需要进行大量的 IO 操作,应当使用并行还是并发?

2018-11-04 14:57:14 +08:00
 wangtianshang
7102 次点击
所在节点    Python
36 条回复
HuHui
2018-11-04 15:00:04 +08:00
看具体业务
wmhx
2018-11-04 15:03:04 +08:00
并行 /并发 有什么区别?
lhx2008
2018-11-04 15:08:31 +08:00
异步
lean
2018-11-04 15:09:32 +08:00
@wmhx 并行:生产流水线
并发:购物订单
misaka19000
2018-11-04 15:10:40 +08:00
并行还是并发不看 IO,要看计算量大不大
WildCat
2018-11-04 15:17:41 +08:00
揭秘 iPhone 售后的灰色产业链,是什么让苹果每年损失十多亿美元
https://zhuanlan.zhihu.com/p/46463952

「据外媒 The Information 统计,苹果在 2013 年用于全球售后维修的预算为 16 亿美元,但最终花了 37 亿美元来维持业务运营,而中国市场的售后处理占了业务支出的大头。」
WildCat
2018-11-04 15:17:52 +08:00
@WildCat 楼上发错了 抱歉!
opengps
2018-11-04 16:29:49 +08:00
并行 /并发 是不是这么理解:
并行,多进程甚至多服务器
并发,单进程多线程

对于将来需要扩展的业务,显然必然选择多进程多服务器这种“分布式”,对于仅仅需要多几个线程充分用满当前 cpu,则并发多线程去运行
mattx
2018-11-04 16:30:25 +08:00
io 的瓶颈在于磁盘, 网卡等, 无法真正的并行, 即使调用上的并发量上去了, 效果也挺差的. 用异步的方式来解决, 降低消耗.
leriou
2018-11-04 16:42:03 +08:00
@wmhx 并行可类比为 2 个人同时去一台饮水机的两个出水口接水, 两个人一个要热水,一个要凉水, 并发类比两个人一起去都要热水
zjsxwc
2018-11-04 16:48:04 +08:00
一张嘴同时说中午与英文是并行;说一句中午再说一句英文是并发。
xmadi
2018-11-04 16:55:45 +08:00
这种咬文嚼字没有意义
qhxin
2018-11-04 17:26:06 +08:00
erlang 解决烦劳
likuku
2018-11-04 17:37:32 +08:00
猜你实际上是想问密集 I/O 时 Python 用 多进程 or 多线程?

假若是问这个,两个都行啊。CPU 密集,则只得用多进程。
kekxv
2018-11-04 17:51:38 +08:00
应当用 redis 等玩意
henglinli
2018-11-04 18:02:03 +08:00
有兴趣可以看看这个,https://sites.google.com/site/1024cores/。 这个人设计了 golang scheduler (我估计 golang 现在任然是这个 scheduler ) https://docs.google.com/document/d/1TTj4T2JO42uD5ID9e89oa0sLKhJYD0Y_kqxDv3I3XMw/edit
我当时只是想看看 lockfree 的,可能你对 Scalable Architecture 这部分更感兴趣。
站在我的水平上,我的意见是并发能达到需求,就不考虑并行。越往底层走,越难 handle,当然也越有意思。
ltoddy
2018-11-04 18:08:54 +08:00
并发是指一次处理多件事。

并行是指一次做多件事。

二者不同,但是有联系。

一个关于结构,一个关于执行。

并发用于制定方案,用来解决可能(但未必)并行的问题。

-- Rob Pike Go 语言的创造者之一

我自己想法是多线程+异步.
zxiso
2018-11-04 18:10:01 +08:00
大量 io 最好可以通过异步流程,分离 io 部分和逻辑部分。因为整体 io 耗时就摆在那里。。逻辑部分可以做点进度条之类的东西让用户感觉良好就好。。
feverzsj
2018-11-04 18:10:47 +08:00
都可以
qwe61655
2018-11-04 19:25:46 +08:00
看情况

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

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

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

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

© 2021 V2EX