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对文件进行并行计算初探(二)相关推荐

  1. python输出csv文件-Python之读取与写入CSV文件

    原标题:Python之读取与写入CSV文件 本文作者:闫续文 文字编辑:张梦婷 技术总编:张学人 有问题,不要怕!访问 CSV(Comma-Separated Values)格式是电子表格和数据库最常 ...

  2. python的文件读取方式_python中文件读取方式

    指\u201CPython编程:从入口到实践\u201D和\u201CPython编程快速启动\u201D1.文件路径获取文件路径包括绝对路径和相对路径.绝对路径是指\u201CE: \\ \\\u2 ...

  3. python读取log文件_python之文件的读写(文本文档,log文件)

    1 #文件打开方式,文件打开是有返回值的 2 #open函数 3 #file_object = open(file_name,access_mode='r') 4 #file_name 必填形参, a ...

  4. 苹果系统python读取文件_python中文件的读取与写入以及os模块

    1.文件读取的三部曲:打开 ---> 操作 ----> 关闭 r(默认参数): -只能读,不能写 -读取文件不存在 会报错 FileNotFoundError: [Errno 2] No ...

  5. 在Python中读取MATLAB的数据文件

    简 介: 本文测试了几种通过python直接读取MATLAB的**.MAT格式的数据文件,有些方法经过测试发现无法完成.而通过mat4py可以比较方便的读取MATLAB中的数据文件.利用手边已有的用于 ...

  6. python以读写方式打开文件_python读写文件操作详细介绍【传智播客】

    Python文件的打开或创建可以使用函数open().该函数可以指定处理模式,设置打开的文件为只读.只写或可读写状态.open()的声明如下所示. open(file, mode='r', buffe ...

  7. python压缩文件夹下的所有文件_python压缩文件夹内所有文件为zip文件的方法

    这里讨论使用Python解压如下五种压缩文件: .gz .tar .tgz .zip .rar 简介gz: 即gzip,通常只能压缩一个文件.与tar结合起来就可以实现先打包,再压缩. tar: li ...

  8. python 读写utf8文件_Python关于 文件读写的总结

    # 文件的操作 # 打开文件 open # 默认的编码是gbk 这个是中文编码,最好的习惯呢就是我们再打开一个文件的时候 # 给它指定一个编码类型 # fobj=open('./Test.txt',' ...

  9. csv java web 导入_DAY5-step9 使用CSV模块和Pandas在Python中读取和写入CSV文件

    什么是CSV文件? CSV文件是一种纯文本文件,其使用特定的结构来排列表格数据. CSV是一种紧凑,简单且通用的数据交换通用格式. 许多在线服务允许其用户将网站中的表格数据导出到CSV文件中. CSV ...

  10. python def return 文件_python基础-文件处理与函数

    1. 文件处理 1.1 文件处理流程 1.打开文件,得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 1.2 文件读取模式r r文本模式的读,在文件不存在,不会创建新文件 f = ...

最新文章

  1. 树莓派悄悄放了个微软“后门”,系统加入微软源却未告知,用户怒了
  2. python正则表达匹配汉字
  3. Android Studio运行报错:无法访问XXX......请删除该文件或确保该文件位于正确的类路径子目录中
  4. 做一个程序员,是不是“努力就会成功”?现实残酷但又必须面对!
  5. 男人在35岁之前最好的投资
  6. 模型参考自适应控制器(MRAC)系列: 2.提升瞬态性能
  7. SCI收录中国期刊一览表
  8. 实验五|Python 企业获利能力分析
  9. 【微信防封域名】【微信不死域名】【微信域名白名单】
  10. page8-JQ的点击隐藏与显示
  11. 区块链在保险业的应用
  12. Oracle安装过程中出现的错误指令
  13. webstorm自定义文件模板
  14. 火狐Android 附加组件,Firefox Nightly 隐藏新功能,让 Android 机用上任意桌面端附加组件...
  15. TaoFramework
  16. 解决APP抓包问题【网络安全】
  17. tophat以及cufflinks的使用
  18. stm8 RTC自动唤醒
  19. file 转换MultipartFile
  20. 英语读书笔记-Book Lovers Day 03

热门文章

  1. rabbitmq系列(一)-基本概念理解
  2. IDEA中如何配置Tomcat和项目?
  3. [转] android自定义布局中的平滑移动
  4. Java Maven简明
  5. 7.Prometheus 监控技术与实践 --- 可视化
  6. 16.深入分布式缓存:从原理到实践 --- 新的旅程
  7. 7.Jenkins 权威指南 --- 分布式构建
  8. 2.ELK stack 集群 搭建
  9. 7. Simple Product
  10. java 汉字 char_char 类型如何存储一个汉字的?