多线程读取同一文件不重复不遗漏的实用方法总结
python多线程读取同一文件

通过多个线程读取相同的文件,并且无法重复或省略要求。
起初我尝试了一种方法(后来的练习证明无效)
每个读取线程的主线程都需要读取文件中的哪些行。
例如,线程1读取1-10行,而线程2读取11-30行。
然后,每个线程通过readline()读取,如果读取行不在此线程的范围内,则将跳过。
实践证明,这几个线程尚未按照我们的期望。
我的猜测是,通过打开文件,多个线程返回相同的句柄。
或者只有一个文件指针用于文件。
在在线搜索和练习后,已经得出结论,以下方法支持同一文件的多线程阅读。
1。通过队列队列实现。主线程启动一个线程以读取文件,并将文件的内容放入队列中。
然后启动多个线程,所有线程都从队列中获取数据。 Python中的队列是线程安全。
是否在Python文件对象线程安全上进行迭代?
2是通过LineCache实现的。 LineCache可以指定行号以读取文件的任何行。主线程首先将读取的行号分配给每个读取线程,然后根据行号将其用Linecache读取。
此方法取决于LineCache读取任何行的速度,如果它是大文件,则速度较慢。
例如,线程1需要读取10-20行。如果线程1具有自己的文件指针,则在读取10行后,您可以直接找到第11行。但是,如果您使用Linecache阅读,一次阅读一行都没关系。当然,我从未探索过LineCache如何将其定位到任何行的原理。
3点文件读数。 Python首先将Linux命令头和尾部称为将文件分为几个文件。然后每个读取线程负责读取文件。