Python多程序分塊讀取超大檔案的方法

2022-10-04 21:54:30 字數 1505 閱讀 2084

讀取超大的文字檔案,使用多程序分塊讀取,將每一塊單獨輸出成檔案

# -*- coding: gbk -*-

import urlparse

import datetime

import os

from multiprocessing import process,queue,array,rlock

"""多程序分塊讀取檔案

"""workers = 4

blocksize = 100000000

file_size = 0

def getfilesize(file):

"""獲取要讀取檔案的大小

"""global file_size

fstream = open(file,'r')

fstream.seek(0,os.seek_end)

file_size = fstream.tell()

fstream.close()

def process_found(pid,array,file,rlock):

global file_size程式設計客棧

global job

global prefix

"""程序處理

args:

pid:程序編號

array:程序間共享佇列,用於標記各程序所讀的檔案塊結束位置

www.cppcns.com file:所讀檔名稱

各個程序先從array中獲取當前最大的值為起始位置startpossition

結束的位置endpossition (startpossition+blocksize) if (startpossition+blocksize)程式設計客棧ne

否則越過邊界,就從新查詢array中的最大值

"""fstream = open(file,'r')

while true:

rlock.acquire()

print 'pid%s'%pid,','.j程式設計客棧oin([str(v) for v in array])

startpossition = max(array)

endpossition = array[pid] = (startpossition+blocksize) if (startpossition+blocksize)程式設計客棧r i in range(workers):

p=process(target=process_found, args=[i,array,file,rlock])

threads.append(p)

for i in range(workers):

threads[i].start()

for i in range(workers):

threads[i].join()

print datetime.datetime.now().strftime("%y/%d/%m %h:%m:%s")

if __name__ == '__main__':

main()

多程序分塊讀取檔案

utf 8 import urlparse import datetime import os from multiprocessing import process,queue,array,rlock 多程序分塊讀取檔案 workers 4 blocksize 100000000 file siz...

python多程序 python多程序

當有多個非相關任務需要處理時,並行能大大提高處理速度。這裡簡要介紹python的multiprocessing模組。簡單多程序編寫 當我們任務數量確定而且比較少的時候,可以手動為每個任務指定乙個程序來執行。import multiprocessing as mp def f a print a if...

python多程序 Python多程序實踐

建立程序方式如下 可以通過lock鎖機制實現共享鎖,但比較常用的方式還是以上這些方式,效率更高,更安全。使用方式 構造 類方法 使用方式 構造 更多型別支援一般使用manager,支援的型別包括list,dict,namespace,lock,rlock,semaphore,boundedsemap...