关于多线程的疑惑
来源:6-1 多线程总结
mahsiaoko
2020-06-06 18:37:24
老师,您好!学完多线程之后我还是非常疑惑。之前我用python进行读取文件时,文件非常大,然后有人给我说用多线程可以进行处理,之后工作中也遇到过需要提高处理速度的,也是被告诉从多线程方面下手,但是我看完对多线程的介绍,还是非常迷惑,就处理非常大的文件来说,提高速度如何使用多线程?老师能不能讲解一下?
3回答
好帮手慕阿园
2020-06-07
同学你好,靠cpu调度执行时间是指CPU对于各个线程的调度是随机的,所以不会一直执行完毕
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
好帮手慕阿园
2020-06-07
同学你好
1,多线程不是为了多个线程去抢占运行机会来提高效率;而是为了在同一时间内多个线程同时处理文件来达到效率的提高
2,我们可以让一个线程必须执行完毕来保证文件的有序完整。一个线程在运行过程中如果没有被打断,是靠cpu调度执行时间,不会一直执行到完毕
3,单核CPU上运行的多线程程序, 同一时间只能一个线程在跑, 系统帮你切换线程而已, 系统给每个线程分配时间片来执行, 每个时间片大概10ms左右, 看起来像是同时跑, 但实际上是每个线程跑一点点就换到其它线程继续跑,效率不会有提高的;切换线程反倒会增加开销,所以在单核CPU的情况下,不推荐使用多线程
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
好帮手慕阿慧
2020-06-06
同学你好,可以开启多个线程,将文件分段处理,每个线程处理一段文件。
基本思路如下:
1. 计算出文件总大小
2. 分段处理,计算出每个线程读取文件的开始与结束位置
(文件大小/线程数)*N,N是指第几个线程,这样能得到每个线程在读该文件的大概起始位置
使用"大概起始位置",作为读文件的开始偏移量(fileChannel.position("大概起始位置")),来读取该文件,直到读到第一个换行符,记录下这个换行符的位置,作为该线程的准确起 始位置.同时它也是上一个线程的结束位置。最后一个线程的结束位置也直接设置为-1
3. 启动线程,每个线程从开始位置读取到结束位置为止。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题
回答 1
回答 3