python 并行读取文件_python对文件进行并行计算初探(二)
importjsonimportmathfrom multiprocessing importPoolimportrequests"""不分割文件,直接起多个进程对文件进行读写
apply_async的callback接收的参数是调用行数的返回值,err_callback接收的参数是抛出来的异常"""
#用户业务逻辑
defget_jw(addr_name):
addr_name=addr_name.split(',')[1]
url= 'https://restapi.amap.com/v3/geocode/geo?address={addr_name}&output=JSON&key=2f114ef951411f01c24a6384b59307a8'result= requests.get(url.format(addr_name=addr_name))
result_str= str(result.content, encoding="utf-8")
rj=json.loads(result_str)if len(rj['geocodes']) >0:
jwd= rj['geocodes'][0]['location']print(jwd)return addr_name + ',' + jwd + '\n'
else:print('-,-')return addr_name + ',' + '-,-' + '\n'
defmy_callback(lines):
with open('/opt/test/qiuxue/target2.txt', 'a') as f:
f.writelines(lines)#读取分块文件
classReader(object):def __init__(self, file_name, start_pos, end_pos, business_func):
self.file_name=file_name
self.start_pos=start_pos
self.end_pos=end_pos
self.business_func=business_funcdefexecute(self):
lines=[]
with open(self.file_name,'rb') as f:if self.start_pos !=0:
f.seek(self.start_pos- 1)if f.read(1) != '\n':
line=f.readline()
self.start_pos=f.tell()
f.seek(self.start_pos)while self.start_pos
line=f.readline().strip()
line= str(line, encoding='utf8')try:
new_line=self.business_func(line)
lines.append(new_line)exceptException as e:
offset= len(line.encode('utf8')) + 1f.seek(-offset, 1)
self.start_pos=f.tell()return ''.join(lines)#将文件分成要求的块数,以list返回起止pos
classFileBlock(object):def __init__(self, file_name, block_num):
self.file_name=file_name
self.block_num=block_numdefblock_file(self):
pos_list=[]
with open(self.file_name,'r') as f:
f.seek(0,2)
start_pos=0
file_size=f.tell()
block_size= math.ceil(file_size /self.block_num)while start_pos <=file_size:if start_pos + block_size >file_size:
pos_list.append((start_pos, file_size))else:
pos_list.append((start_pos, start_pos+block_size))
start_pos= start_pos + block_size + 1
returnpos_listif __name__ == '__main__':
concurrency= 8p=Pool(concurrency)
input_file= '/opt/test/qiuxue/target.txt'fb=FileBlock(input_file, concurrency)for s, e infb.block_file():
reader=Reader(input_file, s, e, get_jw)
p.apply_async(reader.execute, callback=my_callback)
p.close()
p.join()
python 并行读取文件_python对文件进行并行计算初探(二)相关推荐
- python输出csv文件-Python之读取与写入CSV文件
原标题:Python之读取与写入CSV文件 本文作者:闫续文 文字编辑:张梦婷 技术总编:张学人 有问题,不要怕!访问 CSV(Comma-Separated Values)格式是电子表格和数据库最常 ...
- python的文件读取方式_python中文件读取方式
指\u201CPython编程:从入口到实践\u201D和\u201CPython编程快速启动\u201D1.文件路径获取文件路径包括绝对路径和相对路径.绝对路径是指\u201CE: \\ \\\u2 ...
- python读取log文件_python之文件的读写(文本文档,log文件)
1 #文件打开方式,文件打开是有返回值的 2 #open函数 3 #file_object = open(file_name,access_mode='r') 4 #file_name 必填形参, a ...
- 苹果系统python读取文件_python中文件的读取与写入以及os模块
1.文件读取的三部曲:打开 ---> 操作 ----> 关闭 r(默认参数): -只能读,不能写 -读取文件不存在 会报错 FileNotFoundError: [Errno 2] No ...
- 在Python中读取MATLAB的数据文件
简 介: 本文测试了几种通过python直接读取MATLAB的**.MAT格式的数据文件,有些方法经过测试发现无法完成.而通过mat4py可以比较方便的读取MATLAB中的数据文件.利用手边已有的用于 ...
- python以读写方式打开文件_python读写文件操作详细介绍【传智播客】
Python文件的打开或创建可以使用函数open().该函数可以指定处理模式,设置打开的文件为只读.只写或可读写状态.open()的声明如下所示. open(file, mode='r', buffe ...
- python压缩文件夹下的所有文件_python压缩文件夹内所有文件为zip文件的方法
这里讨论使用Python解压如下五种压缩文件: .gz .tar .tgz .zip .rar 简介gz: 即gzip,通常只能压缩一个文件.与tar结合起来就可以实现先打包,再压缩. tar: li ...
- python 读写utf8文件_Python关于 文件读写的总结
# 文件的操作 # 打开文件 open # 默认的编码是gbk 这个是中文编码,最好的习惯呢就是我们再打开一个文件的时候 # 给它指定一个编码类型 # fobj=open('./Test.txt',' ...
- csv java web 导入_DAY5-step9 使用CSV模块和Pandas在Python中读取和写入CSV文件
什么是CSV文件? CSV文件是一种纯文本文件,其使用特定的结构来排列表格数据. CSV是一种紧凑,简单且通用的数据交换通用格式. 许多在线服务允许其用户将网站中的表格数据导出到CSV文件中. CSV ...
- python def return 文件_python基础-文件处理与函数
1. 文件处理 1.1 文件处理流程 1.打开文件,得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 1.2 文件读取模式r r文本模式的读,在文件不存在,不会创建新文件 f = ...
最新文章
- 树莓派悄悄放了个微软“后门”,系统加入微软源却未告知,用户怒了
- python正则表达匹配汉字
- Android Studio运行报错:无法访问XXX......请删除该文件或确保该文件位于正确的类路径子目录中
- 做一个程序员,是不是“努力就会成功”?现实残酷但又必须面对!
- 男人在35岁之前最好的投资
- 模型参考自适应控制器(MRAC)系列: 2.提升瞬态性能
- SCI收录中国期刊一览表
- 实验五|Python 企业获利能力分析
- 【微信防封域名】【微信不死域名】【微信域名白名单】
- page8-JQ的点击隐藏与显示
- 区块链在保险业的应用
- Oracle安装过程中出现的错误指令
- webstorm自定义文件模板
- 火狐Android 附加组件,Firefox Nightly 隐藏新功能,让 Android 机用上任意桌面端附加组件...
- TaoFramework
- 解决APP抓包问题【网络安全】
- tophat以及cufflinks的使用
- stm8 RTC自动唤醒
- file 转换MultipartFile
- 英语读书笔记-Book Lovers Day 03