当前位置: 首页 > news >正文

html5博客网站模板如何做企业推广

html5博客网站模板,如何做企业推广,为您服务网站,体育新闻最新消息女排Python迭代器与生成器深度解析#xff1a;高效处理海量数据的利器 # 大文件分块读取生成器模板 def chunked_file_reader(file_path, chunk_size1024*1024):分块读取大文件生成器with open(file_path, r, encodingutf-8) as f:while Tru…Python迭代器与生成器深度解析高效处理海量数据的利器 # 大文件分块读取生成器模板 def chunked_file_reader(file_path, chunk_size1024*1024):分块读取大文件生成器with open(file_path, r, encodingutf-8) as f:while True:chunk f.read(chunk_size)if not chunk:breakyield chunk# 使用示例 for chunk in chunked_file_reader(huge_log.txt):process_chunk(chunk)一、迭代器协议深度解析 迭代器协议组成要素 class CustomIterator:自定义迭代器实现def __init__(self, data):self.data dataself.index 0def __iter__(self):return self # 返回迭代器对象本身def __next__(self):if self.index len(self.data):raise StopIterationvalue self.data[self.index]self.index 1return value# 使用示例 colors CustomIterator([red, green, blue]) for color in colors:print(color)可迭代对象与迭代器区别 特性可迭代对象迭代器实现方法__iter____iter__ __next__状态保持无保持迭代状态多次迭代每次创建新迭代器单次耗尽内存占用通常较大通常较小典型示例list, dict, strfile对象, generator 二、生成器核心机制 生成器函数工作原理 def fibonacci_generator(max_count):斐波那契数列生成器a, b 0, 1count 0while count max_count:yield aa, b b, a bcount 1# 生成器执行状态演示 gen fibonacci_generator(5) print(next(gen)) # 0 print(next(gen)) # 1 print(next(gen)) # 1 print(next(gen)) # 2 print(next(gen)) # 3 # next(gen) # 触发StopIteration生成器高级特性 # 协程通信 def data_processor():带状态的数据处理器total 0count 0while True:value yield # 接收数据if value is None:breaktotal valuecount 1return (total, total/count)# 使用示例 proc data_processor() next(proc) # 激活生成器 proc.send(10) proc.send(20) proc.send(30) try:proc.send(None) except StopIteration as e:print(f计算结果: {e.value}) # (60, 20.0)三、大文件处理实战 多种文件读取方式对比 def read_entire_file(file_path):一次性读取整个文件with open(file_path) as f:return f.read() # 内存杀手def read_line_by_line(file_path):逐行读取文件with open(file_path) as f:for line in f:yield linedef read_in_chunks(file_path, chunk_size4096):固定块大小读取with open(file_path, rb) as f:while chunk : f.read(chunk_size):yield chunkdef smart_reader(file_path, max_lines1000):智能分块读取自动调整块大小buffer []with open(file_path) as f:for line in f:buffer.append(line)if len(buffer) max_lines:yield bufferbuffer []if buffer:yield buffer生产级大文件处理器 class LogFileAnalyzer:日志文件分析器def __init__(self, file_path):self.file_path file_pathself._line_count 0self._error_count 0def __iter__(self):实现迭代器协议with open(self.file_path, r, errorsreplace) as f:for line in f:self._line_count 1try:parsed self._parse_line(line)except InvalidLogFormat:self._error_count 1continueyield parseddef _parse_line(self, line):解析单行日志if ERROR in line:return self._parse_error(line)# 其他解析逻辑...propertydef stats(self):return {total_lines: self._line_count,error_lines: self._error_count}# 使用示例 analyzer LogFileAnalyzer(server.log) for entry in analyzer:process_log_entry(entry) print(f分析统计: {analyzer.stats})四、性能优化与高级技巧 生成器表达式优化 # 传统列表推导式立即加载所有数据 squares [x**2 for x in range(1000000)] # 占用大量内存# 生成器表达式惰性计算 squares_gen (x**2 for x in range(1000000)) # 内存友好# 管道式处理 result (x * 2 for x in squares_gen if x % 3 0 )内存优化对比测试 import sysdata_list [i for i in range(1000000)] print(f列表内存占用: {sys.getsizeof(data_list)/1024/1024:.2f} MB)data_gen (i for i in range(1000000)) print(f生成器内存占用: {sys.getsizeof(data_gen)} bytes)异步生成器Python 3.6 import aiofilesasync def async_file_reader(file_path):异步文件读取生成器async with aiofiles.open(file_path, moder) as f:async for line in f: # 异步迭代yield line.strip()# 使用示例 async def process_large_file():async for line in async_file_reader(bigfile.txt):await process_line(line)最佳实践清单 优先使用生成器处理大型数据集避免在生成器中修改外部状态使用itertools模块优化迭代逻辑对无限生成器设置安全终止条件合理选择块大小通常4KB-1MB使用yield from简化嵌套生成器结合上下文管理器管理资源使用类型注解提高可读性 # 带类型注解的生成器 from typing import Generator, Iteratordef countdown(n: int) - Generator[int, None, None]:倒计时生成器while n 0:yield nn - 1# 使用yield from def flatten(nested_list) - Iterator:嵌套列表展开器for item in nested_list:if isinstance(item, (list, tuple)):yield from flatten(item)else:yield item性能对比测试处理1GB日志文件 方法内存占用执行时间CPU使用率一次性读取2.1GB12s85%逐行读取45MB25s65%分块读取1MB52MB18s78%异步分块读取48MB15s92% #mermaid-svg-wlN2LYFWLBBdqWhs {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-wlN2LYFWLBBdqWhs .error-icon{fill:#552222;}#mermaid-svg-wlN2LYFWLBBdqWhs .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-wlN2LYFWLBBdqWhs .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-wlN2LYFWLBBdqWhs .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-wlN2LYFWLBBdqWhs .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-wlN2LYFWLBBdqWhs .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-wlN2LYFWLBBdqWhs .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-wlN2LYFWLBBdqWhs .marker{fill:#333333;stroke:#333333;}#mermaid-svg-wlN2LYFWLBBdqWhs .marker.cross{stroke:#333333;}#mermaid-svg-wlN2LYFWLBBdqWhs svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-wlN2LYFWLBBdqWhs .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-wlN2LYFWLBBdqWhs .cluster-label text{fill:#333;}#mermaid-svg-wlN2LYFWLBBdqWhs .cluster-label span{color:#333;}#mermaid-svg-wlN2LYFWLBBdqWhs .label text,#mermaid-svg-wlN2LYFWLBBdqWhs span{fill:#333;color:#333;}#mermaid-svg-wlN2LYFWLBBdqWhs .node rect,#mermaid-svg-wlN2LYFWLBBdqWhs .node circle,#mermaid-svg-wlN2LYFWLBBdqWhs .node ellipse,#mermaid-svg-wlN2LYFWLBBdqWhs .node polygon,#mermaid-svg-wlN2LYFWLBBdqWhs .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-wlN2LYFWLBBdqWhs .node .label{text-align:center;}#mermaid-svg-wlN2LYFWLBBdqWhs .node.clickable{cursor:pointer;}#mermaid-svg-wlN2LYFWLBBdqWhs .arrowheadPath{fill:#333333;}#mermaid-svg-wlN2LYFWLBBdqWhs .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-wlN2LYFWLBBdqWhs .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-wlN2LYFWLBBdqWhs .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-wlN2LYFWLBBdqWhs .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-wlN2LYFWLBBdqWhs .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-wlN2LYFWLBBdqWhs .cluster text{fill:#333;}#mermaid-svg-wlN2LYFWLBBdqWhs .cluster span{color:#333;}#mermaid-svg-wlN2LYFWLBBdqWhs div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-wlN2LYFWLBBdqWhs :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 小数据 大数据 顺序处理 并行处理 异步IO 原始数据源 数据规模 使用列表直接处理 使用生成器 处理方式 普通生成器 多进程生成器 异步生成器 结果输出
http://www.dnsts.com.cn/news/149024.html

相关文章:

  • 免费制作网站网页制作软件怎么做
  • 在婚纱店做网站优化徐州网站建设报价
  • 能被百度收录的建站网站黄岛网站建设负面消息处理
  • 游戏开奖网站建设土特产网站的制作
  • 做网站有底薪吗wordpress谷歌字体加载慢
  • 公司做网站需准备资料石家庄做网站科技公司
  • 精品建设课程网站在对方网站做友情链接
  • 深圳南山网站建设公司教育网站建设
  • 做网站工作图h5建站模板
  • 福州企业网站制作网站开发适合什么工作
  • 做视频给网站到流量设计师用的素材网站
  • 网站侧边 跟随 样式网站设计板块
  • 花生壳做的网站网站利润分析
  • 建设厅官方网站职称互联网推广服务
  • 电商做网站如何做网站霸屏
  • 网站建设小企业案例做动漫主题的网站
  • wordpress企业站烟台网站开发多少钱
  • 四川建设数据共享平台青海seo技术培训
  • 学校的网站如何建设最火爆的网页游戏
  • 金华建设网站备案查询
  • 网站开发计划和预算百度 网站 说明
  • app推广团队在线优化工具
  • 网站后台看不到部分内容在哪个网站可以一对一做汉教
  • 安陆网站建设wordpress用旧的编辑器
  • 手机模板网站下载岱岳区网站设计
  • 中国建设银行官网站汽车卡wordpress 采集微信公众号
  • 网站登录页面模板下载ftp上传不了wordpress
  • 可以做兼职笔译的网站如何做超市的网站
  • wordpress边栏添加标签云seo的含义是什么意思
  • 专业图库网站 西安杨凌网站开发