本文实例讲述了python多进程分块读取超大文件的方法。分享给大家供大家参考,具体如下:
读取超大的文本文件,使用多进程分块读取,将每一块单独输出成文件
# -*- 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:进程间共享队列,用于标记各进程所读的文件块结束位置
file:所读文件名称
各个进程先从array中获取当前最大的值为起始位置startpossition
结束的位置endpossition (startpossition+blocksize) if (startpossition+blocksize)