Python中的并行
必看:简析Python中的四种队列
Python官方文档 — Python 3.12.4 documentation管道Pipe用于在两个进程间传递消息,而队列能够在多个生产者和消费者之间通信。
Pipe
管道可以是全双工(默认),自然可以单工,这取决于duplex参数。
管道k可以发送send()和接收消息recv()
管道主要用于具有亲缘关系的进程之间的通信(如父子进程或兄弟进程)。123456789101112from multiprocessing import Process, Pipedef f(conn): conn.send([42, None, 'hello']) conn.close()if __name__ == '__main__': parent_conn, child_conn = Pipe() p = Process(target=f, args=(child_conn,)) p.start() print(parent_conn.recv()) # prints " ...
Python小知识点
match-casePython重大变化:是match-case,不是switch-case3.10https://segmentfault.com/a/1190000042099299
类的小知识@classmethod@staticmethodnew
JIT字典与类的映射:munch库https://segmentfault.com/a/1190000042296621?utm_source=sf-similar-article
https://segmentfault.com/a/1190000042267980
https://segmentfault.com/u/pythonbianchengxuexiquan###
https://segmentfault.com/a/1190000042180395
joblib VS pickle
joblib 和 pickle 都是 Python 的库,用于实现对象的序列化和反序列化,实现数据持久化。
pickle 是 Python 的标准库的一部分,它可以将 Python 对象转换为字节流,从而实现对象的序列化。pickle 支持 Python 的所有数据类型,包括列表、字典、类实例等。然而,pickle 序列化的结果难以阅读,且跨语言兼容性较差。
joblib 则是 scikit-learn 库的一个扩展库,它专门用于快速持久化 scikit-learn 模型。joblib 类似于 pickle,但是 joblib 具有更快的加载速度和更小的文件大小。此外,joblib 还支持并行计算,这在训练和预测大型模型时非常有用。
优点:
joblib:更快加载速度,更小的文件大小,支持并行计算。
pickle:标准库,支持所有 Python 数据类型,易于使用。
缺点:
joblib:仅适用于 scikit-learn 模型。
pickle:序列化结果难以阅读,跨语言兼容性较差。
一言以蔽之:scikit-learn模型用joblib,python原生类型用pickle
pcap++实战(三)
pcap++实战(三)TLS指纹、SSL分析、 HttpAnalyzer、 DNS解析、PCAP解析、PCAP分割与搜索
这一章主要介绍 pcap++的应用,即示例程序
pcap应用这些应用以bin存在,但源码位于github,可用于学习和借鉴
ArpSpoofing ARP欺骗这是一个应用程序,使用packet++和Pcap++进行ARP欺骗。你可以在这里阅读更多关于ARP欺骗的内容。
arp使用PcapPlusPlus的路由实用程序的实现。
DnsSpoofing DNS欺骗一个命令行实用程序,使用packe++和Pcap++进行DNS欺骗。
DNSResolver DNS解析一个命令行实用程序,使用ARP和DNS协议解析主机名的IPv4地址。工作原理是发送DNS请求并分析DNS回复来解析IPV4地址的主机名
1234567891011Basic usage: DNSResolver [-hl] [-t timeout] [-d dns_server] [-g gateway] [-i interface] -s hostnameOptions: -h ...
pcap++实战(二)
pcap++实战(二)tutorials:这一部分主要介绍pcapplusplus库的基本概念,我们会利用这个库实际写一些代码
库的组成PcapPlusPlus由3个库组成:common++, packet++和pcap++,让我们来讲解一下每一个库的目的和它的主要类:
common++一个库,用于解析、创建和编辑各种支持协议的数据包。这个库可以独立使用,不依赖于Pcap++, libpcap/WinPcap/Npcap等。主要类和实用程序:
RawPacket - 原始包
Layer - 所有协议层的基类。每个协议层负责解析数据包中属于该协议的特定字节
Packet -表示由不同的PcapPlusPlus协议解析器解析,包含不同协议层
Protocol layers (for example: EthLayer, IPv4Layer, IPv6Layer, TcpLayer, UdpLayer, DnsLayer, HttpRequestLayer, HttpResponseLayer, PayloadLayer, etc.) - 代表特定协议解析器的类 ...
pcap++实战(一)
pcap++实战安装:下载releaseprebuilt-ubuntu文件压缩包解压,其目录为├── bin├── example-app├── include├── lib├── LICENSE└── README.release.md并软链接,我的path是~/program/pcapplusplus-23.09-ubuntu-20.04-gcc-9.4.0-x86_64
12sudo ln -s bin/ /usr/local/binsudo ln -s include/pcapplusplus/ /usr/local/include/
跑demohttps://pcapplusplus.github.io/docs/quickstart
1sudo apt-get install libpcap-dev
出现错误:
错误:1http://cn.archive.ubuntu.com/ubuntufocal InRelease暂时不能解析域名“cn.archive.ubuntu.com” 错误:2http://security.ubuntu.com/ubunt ...
ONNX和模型转换
ONNXONNX Runtime | onnxruntimesklearn-onnxsklearn-onnx只支持scikit-learn的模型转换.而 onnxmltools可用于 libsvm, lightgbm, _xgboost_的模型转换.
其它的ONNX模型转换工具:github/onnx, torch.onnx, ONNX-MXNet API, Microsoft.ML.Onnx…
支持的模型Supported scikit-learn Models - sklearn-onnx 1.18.0 documentation
安装1mamba install skl2onnx onnxruntime
入门123456789101112# 训练模型import numpy as npfrom sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom sklearn.ensemble import RandomForestClassifierir ...
dvc
dvc:data version controlCML · Continuous Machine Learning
什么是DVC?DVC是一种利用现有软件工程工具集的数据科学工具。它帮助机器学习团队管理大型数据集,使项目具有可复制性,并更好地进行协作。
选型比较:DVC vs概念模型注册模型注册/登记是记录并索引所有ML模型和版本的工具。通过模型注册,来自ML项目的模型可以被发现、测试、分享和审查。DVC studio的模型注册建立在git的基础上,因此不会割裂。
数据注册实验跟踪DVC如何安装?1pip install dvc
使用vscode可以装插件
DVC如何使用?教程是data+code跟踪,所以比较复杂
DVC创建项目123git initdvc init #必须在git init之后git commit -m "Initialize DVC" #无须add,自动添加暂存区
主要是这三个文件new file: .dvc/.gitignorenew file: .dvc/confignew file: .dvcig ...
MLOps
mlops-roadmap/MLOpsRoadmap2020.md at master · tdcox/mlops-roadmap (github.com)
什么是MLOps?MLOps可以狭义地定义为“将DevOps原则应用于机器学习应用程序的能力”,但正如我们稍后将看到的,这种狭义的定义错过了MLOps对客户的真正价值。相反,我们将MLOps定义为“DevOps方法论的扩展,将机器学习资产(和数据科学资产)作为DevOps生态中的一等公民”。
MLOps应被视为一种持续管理产品ML方面的实践,其方式与成功将这些产品商业化所需的所有其他技术和非技术元素相统一,并在市场上具有最大的生存潜力。
什么不是MLOps?(对于MLOps的错误认识和定义外延)MLOps不是“将Jupyter notebook投入生产环境”。像Jupyter Notebooks这样的RAD工具牺牲了可维护性、可测试性和 scalability,以实现快速方法探索和教学很大一部分ML从业者从未接触过过去70年在商业环境中管理软件资产的经验教训。
数据科学家创建的训练好的ML模型只是可行性的概念证 ...
特征存储
DuckDB在关系型数据库中,INSERT语句是将数据加载到数据库的常用方法。使用INSERT语句时,数据是按行逐个插入的。虽然这种方式直观易懂,但在解析和处理每一个单独的INSERT语句时会涉及到较大的开销。这导致当进行大量数据的批量插入时,逐行插入变得非常低效。
最佳实践避免频繁的逐行插入:作为一般规则,当插入多于几行的数据时,应避免使用大量的逐行INSERT语句(即不要在循环中使用INSERT语句)。在进行大批量数据插入时,应尽量增加每次语句插入的数据量。避免自动提交模式:如果你必须在循环中使用INSERT语句来加载数据,请避免在自动提交模式下执行这些语句。在自动提交模式下,每个单独的语句都会被包裹在一个独立的事务中,意味着每次提交后数据库都需要将更改同步到磁盘以确保数据不丢失。在批量加载数据时,这种同步通常是不必要的,并且会显著减慢程序的速度。小贴士使用事务来包裹循环中的INSERT语句:如果你必须在循环中使用INSERT语句加载数据,可以将这些语句包裹在BEGIN TRANSACTION和COMMIT语句之间,这样可以将多次插入操作合并到一个事务中,减少磁盘同步的频率,从而提 ...