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

2018-11-04 14:57:14 +08:00
 wangtianshang
7124 次点击
所在节点    Python
36 条回复
blackjar
2018-11-04 20:13:19 +08:00
这两个冲突吗? 多进程+协程
inframe
2018-11-04 23:33:57 +08:00
看起来是 concurrency 和 parallel 的关系
ArianX
2018-11-05 00:21:49 +08:00
我一直觉得并行是并发的一种方式
JCZ2MkKb5S8ZX9pq
2018-11-05 00:44:09 +08:00
网络 IO 多开可能提速,硬盘 IO 能提速嘛?
jimzhong
2018-11-05 01:22:09 +08:00
@ArianX 反了吧
glacer
2018-11-05 01:32:53 +08:00
并发就是假的并行...
并行是指多核情况下同时处理多任务,并发是在单核下利用时间片来模拟同时处理多任务。
glacer
2018-11-05 01:34:35 +08:00
回答楼主问题。IO 密集型的程序使用多线程或线程并发即可,这种情况下能最大化利用 CPU。
sl0000
2018-11-05 08:40:24 +08:00
这个应该使用并法逻辑流的 I/O 多路复用
checgg
2018-11-05 09:03:16 +08:00
这是啥问题?
并行和并发的定义是啥,不理解,能否补充一下英文关键词或者具体业务场景?
大量 IO 是指的磁盘 IO 还是网络 IO ?
liuminghao233
2018-11-05 09:03:42 +08:00
异步加协程最好了
Antihank
2018-11-05 09:17:41 +08:00
并发是场景,并行是方法,你怎么并发 IO ?
xmge
2018-11-05 10:01:39 +08:00
并行
dychenyi
2018-11-05 10:08:46 +08:00
我做过, 多线程+mmap
lolizeppelin
2018-11-05 13:38:32 +08:00
看情况 io 上限摆在那里 极限情况下并行并不能超过物理上限
反而因为大量上下文切换降低性能

你试试 多个大量数据的 SQL 文件并行插入 结果插入速度远低于顺序执行这些 sql 文件


但是多个少量 sql 文件 并行插入性能就不错

所以 看情况
xiangbohua
2018-11-05 21:13:07 +08:00
中间层缓冲,统一 IO 进磁盘,随机 IO 真的废
wangtianshang
2018-11-06 20:00:45 +08:00
@glacer 是的😁

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

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

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

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

© 2021 V2EX