相关疑难解决方法(0)

错误:无法找到vcvarsall.bat

我试图安装Python包dulwich:

pip install dulwich
Run Code Online (Sandbox Code Playgroud)

但我得到一个神秘的错误信息:

error: Unable to find vcvarsall.bat
Run Code Online (Sandbox Code Playgroud)

如果我尝试手动安装包,也会发生同样的情况:

> python setup.py install
running build_ext
building 'dulwich._objects' extension
error: Unable to find vcvarsall.bat
Run Code Online (Sandbox Code Playgroud)

python windows pip failed-installation setup.py

842
推荐指数
18
解决办法
87万
查看次数

泡椒还是json?

我需要将一个小dict对象保存到磁盘,其对象的类型str和值是ints ,然后恢复它.像这样的东西:

{'juanjo': 2, 'pedro':99, 'other': 333}
Run Code Online (Sandbox Code Playgroud)

什么是最好的选择,为什么?用pickle或用simplejson?序列化?

我使用的是Python 2.6.

python json pickle

107
推荐指数
7
解决办法
7万
查看次数

Python pickle协议选择?

我使用python 2.7并试图挑选一个对象.我想知道泡菜协议之间真正的区别是什么.

import numpy as np
import pickle
class data(object):
    def __init__(self):
        self.a = np.zeros((100, 37000, 3), dtype=np.float32)

d = data()
print "data size: ", d.a.nbytes/1000000.
print "highest protocol: ", pickle.HIGHEST_PROTOCOL
pickle.dump(d,open("noProt", 'w'))
pickle.dump(d,open("prot0", 'w'), protocol=0)
pickle.dump(d,open("prot1", 'w'), protocol=1)
pickle.dump(d,open("prot2", 'w'), protocol=2)


out >> data size:  44.4
out >> highest protocol:  2
Run Code Online (Sandbox Code Playgroud)

然后我发现保存的文件在磁盘上有不同的大小:

  • noProt:177.6MB
  • prot0:177.6MB
  • prot1:44.4MB
  • prot2:44.4MB

我知道这prot0是一个人类可读的文本文件,所以我不想使用它.我猜协议0是默认给出的协议.

我想知道协议1和协议2之间的区别是什么,我有理由选择其中一个或另一个吗?

什么是更好用,picklecPickle

python numpy pickle python-2.7

56
推荐指数
2
解决办法
4万
查看次数

用python 3.5安装cPickle

这可能很傻但我无法安装cPicklepython 3.5 docker镜像

Dockerfile

FROM python:3.5-onbuild
Run Code Online (Sandbox Code Playgroud)

requirements.txt

cpickle
Run Code Online (Sandbox Code Playgroud)

当我尝试构建图像时

$ docker build -t sample .
Sending build context to Docker daemon 3.072 kB
Step 1 : FROM python:3.5-onbuild
# Executing 3 build triggers...
Step 1 : COPY requirements.txt /usr/src/app/
Step 1 : RUN pip install --no-cache-dir -r requirements.txt
 ---> Running in 016c35a032ee
Collecting cpickle (from -r requirements.txt (line 1))
  Could not find a version that satisfies the requirement cpickle (from -r requirements.txt (line 1)) (from versions: )
No …
Run Code Online (Sandbox Code Playgroud)

python pickle docker python-3.5

33
推荐指数
2
解决办法
6万
查看次数

减小cPickle对象的大小

我正在运行创建大型对象的代码,包含多个用户定义的类,然后我必须将其序列化以供以后使用.据我所知,只有酸洗才能满足我的要求.我一直在使用cPickle存储它们,但它生成的对象大小约为40G,代码运行在500 MB的内存中.序列化的速度不是问题,但对象的大小是.是否有任何提示或替代流程可以使泡菜变小?

python serialization pickle

31
推荐指数
2
解决办法
2万
查看次数

marshal转储速度更快,cPickle加载速度更快

我正在实现一个需要序列化和反序列化大对象的程序,所以我正在进行一些测试pickle,cPicklemarshal选择模块来选择最佳模块.一路上我发现了一些非常有趣的东西:

我正在使用dumps然后loads(对于每个模块)列表中的dicts,元组,整数,浮点数和字符串.

这是我的基准测试的输出:

DUMPING a list of length 7340032
----------------------------------------------------------------------
pickle => 14.675 seconds
length of pickle serialized string: 31457430

cPickle => 2.619 seconds
length of cPickle serialized string: 31457457

marshal => 0.991 seconds
length of marshal serialized string: 117440540

LOADING a list of length: 7340032
----------------------------------------------------------------------
pickle => 13.768 seconds
(same length?) 7340032 == 7340032

cPickle => 2.038 seconds
(same length?) 7340032 == 7340032

marshal => 6.378 seconds
(same …
Run Code Online (Sandbox Code Playgroud)

python performance serialization

18
推荐指数
4
解决办法
1万
查看次数

什么是更快 - 加载酸洗字典对象或加载JSON文件 - 到字典?

什么是更快:

(A)'Unpickling'(正在加载)一个酸洗字典对象,使用 pickle.load()

要么

(B)使用将JSON文件加载到字典 simplejson.load()

假设:在案例A中已存在pickle对象文件,并且在案例B中已存在JSON文件.

python json simplejson pickle

10
推荐指数
1
解决办法
7750
查看次数