讀取超大的文字檔案,使用多程序分塊讀取,將每一塊單獨輸出成檔案
# -*- 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...