json.loads和eval 速度对比

json.loads和eval 速度对比

代码1

python 复制代码
import json
import time
import pandas as pd

data_sets = pd.read_pickle("val_token_id.pandas_pickle")
data_sets=[str(i) for i in data_sets]
start=time.time()
[json.loads(i) for i in data_sets]
print(time.time()-start)

start=time.time()
[eval(i) for i in data_sets]
print(time.time()-start)

结果图

代码2

python 复制代码
import json
import time
from multiprocessing import Process, Manager, freeze_support
import pandas as pd
from tqdm import tqdm
def json_loads_data(return_list,one_data):
    return_list+=[json.loads(i)  for i in tqdm(one_data)]

if __name__ == '__main__':
    freeze_support()
    data_sets = pd.read_pickle("val_token_id.pandas_pickle")
    data_sets = [str(i) for i in data_sets]

    start = time.time()
    data = Manager().list()
    num = 5
    p_list = []
    for i in range(0, len(data_sets), len(data_sets)//num):
        j = i + len(data_sets)//num
        p = Process(target=json_loads_data, args=(data, data_sets[i:j]))
        p.start()
        p_list.append(p)
    for p in p_list:
        p.join()

    print("multi_json_loads", time.time() - start)

    start = time.time()
    [json.loads(i) for i in data_sets]
    print("json_loads", time.time() - start)

    start = time.time()
    pd.DataFrame(data_sets)[0].apply(lambda x: json.loads(x)).values.tolist()
    print("dataFrame_apply", time.time() - start)

    start = time.time()
    json.loads(str(data_sets).replace("'", ""))
    print("json_loads_str", time.time() - start)

    start = time.time()
    [eval(i) for i in data_sets]
    print("eval", time.time() - start)

参考地址

https://blog.csdn.net/qq_35869630/article/details/105919104

Python 在大数据处理下的优化(一)用json.loads比eval快10倍!

相关推荐
小学鸡!2 分钟前
win10/win11下载安装Docker,Windows安装Docker Desktop 【保姆级教程】
windows·docker·容器
夜星辰202321 分钟前
在 Ubuntu 里创建 Docker 容器,与在 Windows 上安装 VMware Workstation Pro 虚拟机的区别
windows·ubuntu·docker
姜太小白39 分钟前
【其他】QEMU 在 Windows 和 CentOS 7 下安装及运行 ARM 操作系统指南
arm开发·windows·centos
私人珍藏库1 小时前
[Windows] 央视影音v6.0.4.1绿色版
windows·工具·软件·影音·多功能
金刚狼881 小时前
UUID和Name不在同一条BLE广播报文里
c++·windows
张涛酱1074561 小时前
降低 LLM Token 成本 40-50%:TOON 格式实战
json·ai编程
nudt_qxx2 小时前
Ubuntu 26.04 换国内源 清华源 阿里源 中科大源 华为源
linux·windows·ubuntu
桌面运维家2 小时前
Windows性能优化:任务管理器深度使用指南
windows·性能优化
攻城狮在此2 小时前
ping命令中TTL值是什么?详解与用法
linux·网络·windows
wefly20173 小时前
jsontop.cn使用全攻略:免费无广告的在线工具站,电脑手机通用
开发语言·安全·json·ecmascript·json在线转换