Fusion Solutions 消息打包器
项目描述
Fusion Solutions 消息打包器
介绍
用于套接字通信的消息打包器。纯 Python 实现,它稍微慢一些pickle,marshal甚至json,但对生产来说更安全。打包和解包支持以下类型:
None- 布尔值:
True和False int- 浮点数
float:inf和-inf strbytearray(在解包过程中将转换为bytes)byteslist(在解包过程中将转换为tuple)tupledict(dict键类型可以是这个列表中的任何一个)set
安装
需要 python 3.8 或更高版本。
要在PyPI上安装最新版本,只需运行:
pip3 install python-fspacker
或者要安装最新版本,请运行:
git clone https://github.com/FusionSolutions/python-fspacker.git
cd python-fspacker
python3 setup.py install
Python 库
用法
pickle与dump、、dumps和函数load一起使用。loads
import fsPacker
data = fsPacker.dumps(["test"]*5)
print( fsPacker.loads(data) )
基准
环境:Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz,DIMM DDR4 Synchronous Registered (Buffered) 2133 MHz
$/python-fspacker: python3 -m benchmark
Batch 1# started
pickle
packed data size: 369436 byte
dump : best: 0.00097681 <- median avg: 0.00097981 - average: 0.00098675 -> worst: 0.00115466
loads: best: 0.00116250 <- median avg: 0.00116567 - average: 0.00116768 -> worst: 0.00123618
marshal
packed data size: 474624 byte
dump : best: 0.00060849 <- median avg: 0.00060978 - average: 0.00061214 -> worst: 0.00066010
loads: best: 0.00093875 <- median avg: 0.00094239 - average: 0.00094469 -> worst: 0.00099110
FSPacker version 1
packed data size: 348332 byte
dump : best: 0.00140599 <- median avg: 0.00142470 - average: 0.00143550 -> worst: 0.00179069
loads: best: 0.00092720 <- median avg: 0.00108024 - average: 0.00107529 -> worst: 0.00113729
FSPacker PURE PYTHON version 1
packed data size: 329293 byte
dump : best: 0.02668814 <- median avg: 0.02687568 - average: 0.02691436 -> worst: 0.02727839
loads: best: 0.02563514 <- median avg: 0.02585654 - average: 0.02623195 -> worst: 0.02991657
FSPacker version 2
packed data size: 324346 byte
dump : best: 0.00133745 <- median avg: 0.00135156 - average: 0.00136461 -> worst: 0.00155367
loads: best: 0.00094138 <- median avg: 0.00107694 - average: 0.00107477 -> worst: 0.00114164
FSPacker PURE PYTHON version 2
packed data size: 314318 byte
dump : best: 0.02291694 <- median avg: 0.02304409 - average: 0.02304181 -> worst: 0.02318106
loads: best: 0.02749131 <- median avg: 0.02768044 - average: 0.02768100 -> worst: 0.02799873
Batch 2# started
pickle
packed data size: 274491 byte
dump : best: 0.00084737 <- median avg: 0.00085283 - average: 0.00085566 -> worst: 0.00091460
loads: best: 0.00100438 <- median avg: 0.00101581 - average: 0.00101901 -> worst: 0.00110241
marshal
packed data size: 360242 byte
dump : best: 0.00051488 <- median avg: 0.00051733 - average: 0.00051980 -> worst: 0.00054507
loads: best: 0.00083179 <- median avg: 0.00083660 - average: 0.00084212 -> worst: 0.00090665
FSPacker version 1
packed data size: 271694 byte
dump : best: 0.00146050 <- median avg: 0.00147431 - average: 0.00147690 -> worst: 0.00153197
loads: best: 0.00092286 <- median avg: 0.00100156 - average: 0.00099671 -> worst: 0.00102327
FSPacker PURE PYTHON version 1
packed data size: 238499 byte
dump : best: 0.02538159 <- median avg: 0.02551851 - average: 0.02557210 -> worst: 0.02591332
loads: best: 0.02445310 <- median avg: 0.02459201 - average: 0.02464271 -> worst: 0.02524533
FSPacker version 2
packed data size: 238735 byte
dump : best: 0.00135346 <- median avg: 0.00136909 - average: 0.00137037 -> worst: 0.00141406
loads: best: 0.00090187 <- median avg: 0.00100334 - average: 0.00101569 -> worst: 0.00130636
FSPacker PURE PYTHON version 2
packed data size: 221546 byte
dump : best: 0.02124800 <- median avg: 0.02136108 - average: 0.02141090 -> worst: 0.02174148
loads: best: 0.02539373 <- median avg: 0.02556542 - average: 0.02576320 -> worst: 0.02921140
Batch 3# started
pickle
packed data size: 274511 byte
dump : best: 0.00087786 <- median avg: 0.00088081 - average: 0.00088287 -> worst: 0.00093917
loads: best: 0.00098829 <- median avg: 0.00099558 - average: 0.00099822 -> worst: 0.00105612
marshal
packed data size: 360267 byte
dump : best: 0.00051608 <- median avg: 0.00051854 - average: 0.00051974 -> worst: 0.00054176
loads: best: 0.00082532 <- median avg: 0.00082907 - average: 0.00083079 -> worst: 0.00085855
FSPacker version 1
packed data size: 414729 byte
dump : best: 0.00300953 <- median avg: 0.00304670 - average: 0.00307232 -> worst: 0.00353145
loads: best: 0.00209713 <- median avg: 0.00237827 - average: 0.00240026 -> worst: 0.00317319
FSPacker PURE PYTHON version 1
packed data size: 365886 byte
dump : best: 0.06813255 <- median avg: 0.06852698 - average: 0.06859602 -> worst: 0.06918136
loads: best: 0.06472549 <- median avg: 0.06544865 - average: 0.06549210 -> worst: 0.06638827
FSPacker version 2
packed data size: 381787 byte
dump : best: 0.00308844 <- median avg: 0.00310415 - average: 0.00311051 -> worst: 0.00318295
loads: best: 0.00206454 <- median avg: 0.00235557 - average: 0.00234600 -> worst: 0.00239830
FSPacker PURE PYTHON version 2
packed data size: 348954 byte
dump : best: 0.06123471 <- median avg: 0.06176491 - average: 0.06173875 -> worst: 0.06195223
loads: best: 0.07077837 <- median avg: 0.07135906 - average: 0.07146089 -> worst: 0.07298397
Batch 4# started
pickle
packed data size: 97 byte
dump : best: 0.00055353 <- median avg: 0.00056210 - average: 0.00056276 -> worst: 0.00057487
loads: best: 0.00064643 <- median avg: 0.00065715 - average: 0.00065725 -> worst: 0.00066493
marshal
packed data size: 79 byte
dump : best: 0.00047902 <- median avg: 0.00048745 - average: 0.00048688 -> worst: 0.00049302
loads: best: 0.00058795 <- median avg: 0.00059175 - average: 0.00059234 -> worst: 0.00060103
FSPacker version 1
packed data size: 85 byte
dump : best: 0.00077319 <- median avg: 0.00078550 - average: 0.00078805 -> worst: 0.00080470
loads: best: 0.00068854 <- median avg: 0.00076246 - average: 0.00075894 -> worst: 0.00078787
FSPacker PURE PYTHON version 1
packed data size: 85 byte
dump : best: 0.01360374 <- median avg: 0.01369004 - average: 0.01373398 -> worst: 0.01407292
loads: best: 0.01672420 <- median avg: 0.01689699 - average: 0.01688315 -> worst: 0.01702459
FSPacker version 2
packed data size: 74 byte
dump : best: 0.00075289 <- median avg: 0.00076416 - average: 0.00076328 -> worst: 0.00077514
loads: best: 0.00053710 <- median avg: 0.00055360 - average: 0.00055652 -> worst: 0.00058802
FSPacker PURE PYTHON version 2
packed data size: 74 byte
dump : best: 0.00831298 <- median avg: 0.00834915 - average: 0.00835809 -> worst: 0.00851608
loads: best: 0.01466914 <- median avg: 0.01474124 - average: 0.01477603 -> worst: 0.01507150
贡献
欢迎提交错误报告、建设性批评和建议。如果您有一些在github上创建问题。
版权
此发行版中的所有代码版权所有 (c) 2021 Fusion Solutions Kft。
该实用程序在 GNU 通用公共许可证下提供。包含的 LICENSE 文件对此进行了详细描述。
保修单
本软件按“原样”提供,不提供任何形式的明示或默示保证,包括但不限于对适销性和特定用途适用性的默示保证。使用本软件的全部风险由您承担。
在任何情况下,任何版权所有者或可能修改和/或重新分发库的任何其他方均不对您的任何损害负责,即使该持有人或其他方已被告知此类损害的可能性。
同样,请参阅包含的许可证文件以了解具体的法律细节。