使用 clojure 读取大型命令输出
我使用 clojure.java.shell 命令中的 sh 函数来读取命令的非常大的输出。输出约为 60meg 数据。
我不断收到 java.lang.OutOfMemoryError 错误。有没有办法打开一种管道,让我读取输出并将其解析为向量。就像命令输出的惰性序列一样?
基本上,数据是一个大的字节数组,我想将其转换为数字并放入向量中。
I'm using the sh function from the clojure.java.shell command to read the very large output of a command. The output is around 60meg of data.
I keep getting java.lang.OutOfMemoryError. Is there a way to open a sort of pipe that would let me read the output and parse it into a vector . Like a lazy sequence for the output of the command?
Basically the data is a large array of byte that I want to convert to just numbers and put into a vector.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
clojure.java.shell/sh 将始终返回非惰性字符串
在 BufferedReader 上使用惰性 line-seq 的解决方案(不处理关闭、环境传递和编码):
clojure.java.shell/sh will always return a non-lazy string
A solution (doesn't handle closing, environment passing and encoding) using lazy line-seq on an BufferedReader: