python多进程分块读取文件
来源:互联网 发布:js alter 标题 编辑:程序博客网 时间:2024/06/06 04:51
# -*- coding: utf-8 -*-import urlparseimport datetimeimport osfrom multiprocessing import Process,Queue,Array,RLockWORKERS = 6BLOCK_SIZE = 0FILE_SIZE = 0FILE_NAME = 'try.log'def getFilesize(file): global FILE_SIZE fs = open(file,'r') fs.seek(0,os.SEEK_END) FILE_SIZE = fs.tell() fs.close()def process_found(pid,array,rlock): global FILE_SIZE,BLOCK_SIZE fs = open(FILE_NAME,'rb') try: rlock.acquire() begin = array[0] end = (begin + BLOCK_SIZE) print begin,end if begin >= FILE_SIZE: print 'begin',begin array[0] = begin raise Exception('end of file') if end < FILE_SIZE: fs.seek(end) fs.readline() end = fs.tell() if end >= FILE_SIZE: end = FILE_SIZE array[0] = end print '-------------',begin,end except Exception, e: print e.__class__.__name__,str(e) return finally: rlock.release() fs.seek(begin) pos = begin fd = open('tmp_pid'+str(pid)+'_jobs','wb') while pos < end: fd.write(fs.readline()) pos = fs.tell() fs.close() fd.close()def main(): global FILE_SIZE,BLOCK_SIZE,WORKERS,FILE_NAME getFilesize(FILE_NAME) BLOCK_SIZE = FILE_SIZE/WORKERS print FILE_SIZE,BLOCK_SIZE rlock = RLock() array = Array('l',WORKERS) array[0] = 0 process=[] for i in range(WORKERS): p=Process(target=process_found, args=[i,array,rlock]) process.append(p) for i in range(WORKERS): process[i].start() for i in range(WORKERS): process[i].join()if __name__ == '__main__': main()
- python多进程分块读取文件
- Python多进程分块读取文件
- python多进程分块读取文件
- Python 多线程分块读取文件
- python面试--多进程分块处理大型文件
- 分块读取文件流
- 大文件的分块读取
- 按字节分块读取文件
- python多进程读取大文件并统计词频
- 【python】读取文件&停止启动进程
- Python 多线程分块读文件
- spark 读取mysql python和chunked分块
- pandas.read_csv——分块读取大文件
- HttpWebRequest &&FileStream分块读取和写入文件&WebClient
- pandas.read_csv——分块读取大文件
- python 同时读取多个文件
- Python文件读取说明
- python多线程读取文件
- 【转载】给vs2005~~vs2010 添加串…
- MySQL必知必会笔记(七)事务处理 全球化和本地化(字符集和校对)
- 开始USB驱动编程~~
- VS2010快捷键
- C++每日学习之引用
- python多进程分块读取文件
- C++每日学习之 重载和默认参数
- C++每日学习之+运算符重载
- matlab 实现串口通信 SERIAL
- 今天晚上回家
- 回家真好
- 今天回校了
- 把鼠标放上去会看到惊喜
- 天下一曾无二曾