我已经使用Python多年了.我广泛使用泡菜.我无法弄清楚这是做什么的:
with codecs.open("huge_picklefile.pc", "rb") as f:
data = pickle.load(f)
print(len(data))
data = pickle.load(f)
print(len(data))
data = pickle.load(f)
print(len(data))
Run Code Online (Sandbox Code Playgroud)
这回到我身边:
335
59
12
Run Code Online (Sandbox Code Playgroud)
我感到困惑.我习惯于将大量文件加载到内存中.对象本身是一个庞大的数组(我假设).它可以由多个泡菜对象组成吗?不幸的是,我没有创建pickle对象,我没有访问谁做了.
我无法弄清楚为什么pickle将我的文件拆分成块,这不是默认值,我不是告诉它的.重新加载同一个文件有什么作用?老实说,直到现在我从未尝试过甚至遇到过一个用例.
我花了5个小时试图找出如何在Google上提出这个问题.不出所料,尝试"在同一文件上加载多个泡菜"并不会产生任何有用的东西.Python 3.7 pickle文档没有描述这种行为.我无法弄清楚如何反复加载pickle文档不会(a)崩溃或(b)将整个内容加载到内存中然后只引用自己.在我使用python的15年中,我从来没有遇到过这个问题...所以我认为这很奇怪,我们应该只使用数据库.
Docker 在 Windows 10 上非常慢。我执行了很多任务以使索引不在文件夹上运行,并尝试加快速度。该进程似乎占用了 100% 的 CPU,这很好,但也占用了 100% 以上的磁盘 IO,这是一个巨大的瓶颈。在 Linux 或 Mac 上运行不到 10 秒的任务在 Windows 上需要 40 分钟以上才能完成。
这根本无法以任何有意义的方式使用。docker-compose 坚持以 150MB/s 的速度写入磁盘而不是使用 ram 是否有原因?我有大量的内存。我实际上可以将整个 docker-container 系统存储在 ram 中,并且还剩下大约 10GB。
顺便说一句,虽然坚持 docker 只在 Linux 服务器上运行是可行的,但开发必须支持 windows、linux 和 mac。我不敢相信测试没有揭示 Windows 10 支持严重缺乏,不,关闭防病毒软件绝对不是一个选择。许多 docker 开发人员没有适当的权限来执行此操作,建议 docker 用户禁用防病毒功能是一个令人难以置信的请求。还有,禁用杀毒之类的还是不能解答为什么docker占用100%的磁盘IO。