在python中加载1GB大型json文件时如何解决内存错误?

时间:2016-05-04 13:11:31

标签: python csv io out-of-memory

我试图将json文件转换为csv但是出现内存错误。 是否有任何有效的方法来微调此代码以处理python中的大型json文件。

public class VertXSampleServer extends AbstractVerticle {
  @Override
  public void start() {
    HttpServer server=vertx.createHttpServer();
    server.requestHandler(new Handler<HttpServerRequest>() {
      @Override
      public void handle(HttpServerRequest request) {
        HttpServerResponse response=request.response();
        // by default it is 200 so this is optional
        response.setStatusCode(HttpStatus.SC_OK);
        System.out.println("re received");
        response.putHeader("Content-Length", Integer.toString(5));
        // what you're doing here is wrong you should end the response
        // response.write("Hello");
        response.end("Hello");
        // You should use write if you are going to use chunked responses
        // and the last one should be a end to notify that the request
        // is finished
      }
    }).listen(9091);
  }
}

2 个答案:

答案 0 :(得分:4)

您可以尝试使用ijson。它是一个模块,可以将JSON用作流,而不是块文件。 ijson是JSON SAX对XML的作用。

ScriptEngine

答案 1 :(得分:0)

您正在将文件的整个内容加载到一个列表(行)中,并将结果存储在另一个列表(结果)中。

除非您需要一些优势,例如访问速度(ram vs hdd),否则不要将文件的全部内容加载到内存中。

相反,您可以在此处理一行,阅读它,处理它并附加到您的文件中。