并发读取python中的文件

时间:2012-10-24 16:13:20

标签: python multithreading

我有一个文件,我已经写了一些数据。说8个字节的数据 现在使用我的python脚本,我想使用一个线程读取前四个字节,并在第一个线程仍在运行或挂起时使用另一个线程读取接下来的4个字节。 我怎么能用python做到这一点?即 1)使用file1中的thread1读取前4个字节 2)当thread1运行或挂起时,使用thread2

从file1读取下4个字节

2 个答案:

答案 0 :(得分:3)

运行两个线程并在两个线程中分别打开和读取文件,您可以使用seek跳转到特定位置

答案 1 :(得分:0)

from multiprocessing import Process, Queue

class MyFileWrapper:

    def __init__(self, filePath, start, stop):
        self.filePath = filePath
        self.start = start
        self.stop = stop

    def getData(self):
        with open(self.filePath, 'r') as f:
            f.seek(self.start)
            data = f.read(self.stop - self.start)
            print data

def worker(q):
    myFileWrapper = q.get()
    myFileWrapper.getData()

if __name__ == "__main__":

    work_queue = Queue()

    p1 = Process(target=worker, args=(work_queue,))
    p1.start()
    p2 = Process(target=worker, args=(work_queue,))
    p2.start()

    work_queue.put(MyFileWrapper('C:\Users\Asus\Desktop\pytest.txt', 0, 4))
    work_queue.put(MyFileWrapper('C:\Users\Asus\Desktop\pytest.txt', 4, 8))

    work_queue.close()
    work_queue.join_thread()
    p1.join()
    p2.join()