2012-10-24 76 views
0

我有一個文件,我寫了一些數據。說8個字節的數據 現在使用我的python腳本,我想在第一個線程仍在運行或暫停時使用一個線程讀取前四個字節,並使用另一個線程讀取後續4個字節。 我該如何使用python來做到這一點?即 1)使用線程1從文件1 2),而線程1運行閱讀前4個字節或懸浮,使用線程2並行讀取python中的文件

+0

這聽起來像個壞主意。從文件中只讀取一個線程並將數據交給工作人員處理會不會更容易? – millimoose

回答

3

運行的兩個線程讀從文件1接下來的4個字節,開放及兩個線程分別讀取文件,則可以使用seek跳轉到特定位置

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()