我的程序属于 IO 密集型,理论上使用多线程的话效率应该高。
有没有工具可以很直观的看出来跑同样的数据量,多线程比单线程要快多少。
除了单线程、多线程分开跑一边分别打印时间这种方式。
1
hjc4869 2017-09-18 23:21:10 +08:00 via Android
是谁教你的 IO 密集型用多线程效率更高?
|
2
cheetah 2017-09-18 23:22:20 +08:00
如果是 web 应用的话可以用各种压测工具,如 ab,不是的话我也不知道了
|
3
wellsc 2017-09-18 23:44:39 +08:00
IO 密集型的话单线程的 callback 和协程并发都比多线程效率高,因为单线程不需要过多的关心线程的栈空间、调度成本、CPU 使用率等问题。。
|
4
changwei 2017-09-19 01:21:00 +08:00 via Android
打开 windows 自带的资源管理器或者任务管理器,然后观察 io,哪个硬盘或者网络 io 占的多就是哪个快。
|
5
leavic 2017-09-19 07:38:15 +08:00
@hjc4869 如果他只用 python 自带的库,multi processing 确实是会效率更高的,自带的库在 block 时会自动释放 GIL。当然,也只是比单纯的单线程高,更高的肯定是 coroutine。
|
6
nullcc 2017-09-19 08:49:16 +08:00
建议 LZ 复习一下操作系统中进程和线程知识
|
7
quadpixels 2017-09-19 09:14:47 +08:00
确实是依赖于负载类型的
就拿 RSTM 这个事务内存库中自带的性能测试来看,红黑树的并行度比哈希表要高一些: 如果开 4 个线程,红黑树大概有单线程 4 倍左右的性能 但是哈希表开 4 个线程,只有单线程 2 倍左右的性能 可能是访存与计算操作密集度之比导致的 |