python 超大文件分析map_async seek
时间:2022-06-19
本文章向大家介绍python 超大文件分析map_async seek,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/9/16 上午2:00
# @Author : BrownWang
# @Email : 277215243@qq.com
# @File : Analysis.py
# @Software: PyCharm
import re
import heapq
import threading
from multiprocessing import Pool
dic={}
fdic={}
def readconfig():
with open('./ipdb_cn.txt',mode='r') as f:
for i in f:
nn=i.split()
tn= nn[2].decode('utf-8')
if dic.has_key(tn):
dic[tn].add('.'.join(nn[0].split('.')[0:3]))
else:
dic[tn]=set()
dic[tn].add('.'.join(nn[0].split('.')[0:3]))
fdic[tn]=0
t=threading.Thread(target=readconfig)
t.start()
tf=open('./flowdata.log','r')
tf.seek(0,2)
total=tf.tell()
def run(arg):
start=arg[0]
end=arg[1]
with open('./flowdata.log','r') as f:
sets=set()
f.seek(start,0)
for i in f:
if f.tell() > end:
return sets
if '_ip' in i:
sets.add(re.findall(r'_ip:s*(d+.d+.d+).d+',i)[0])
return sets
p=Pool(8)
runl=[]
for i in range(8):
runl.append((total*i/8,total*(i+1)/8))
result=p.map_async(run,runl)
p.close()
p.join()
fil=[]
results=result.get()
for i in results:
fil+=i
filset=set(fil)
sumfil=len(filset)
t.join()
for k in dic:
for i in filset:
if i in dic[k]:
fdic[k]+=1
ret=[{'n':k,'v':fdic[k]/float(sumfil)*100} for k in fdic]
sortl=heapq.nlargest(len(ret),ret,key=lambda s:s['v'])
for i in sortl:
print i['n'] + ' ' + str(round(i['v'],2))+'%'
- 安全科普:SQLi Labs 指南 Part 1
- Do You Kown Asp.Net Core - 根据实体类自动创建Razor Page CURD页面模板
- 2014上半年国内安卓银行应用隐私泄露和安全隐患研究报告
- Do You Kown Asp.Net Core -- Asp.Net Core 2.0 未来web开发新趋势 Razor Page
- Metasploitable2使用指南
- 在渗透测试中使用fuzz技术(附windows安装指南)
- 黑了记者:写个恶意软件玩玩(二)
- 开源BUG跟踪平台JIRA目录遍历漏洞分析
- 黑了记者:写个恶意软件玩玩(一)
- 使用 Python 工具 Locust 进行负载测试
- 玩转Google的XSS游戏
- iOS基于GPUImage的图像形变设计(简单形变部分)
- 不错的node.js入门
- Sql语句收藏
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 自定义弹出菜单和对话框功能实例代码
- linux文件管理命令实例分析【权限、创建、删除、复制、移动、搜索等】
- Android编程操作手机通讯录的方法示例
- Android中oncreate中获得控件高度或宽度的实现方法
- Android编程自定义对话框(Dialog)位置及大小的方法
- android端实现验证码随机生成功能
- Android编程实现切换imageView的方法分析
- 猿实战20——商品发布之sku与笛卡尔乘积的那些事儿
- 浅谈Android单元测试的作用以及简单示例
- linux上传并配置jdk和tomcat的教程详解
- Android SQLite事务处理结合Listview列表显示功能示例
- Android开发之如何自定义数字键盘详解
- 在Android上实现HttpServer的示例代码
- Linux /etc/network/interfaces配置接口方法
- Android中Service和Activity相互通信示例代码