可能重复: 有没有一种高效,快速的方式来加载python中的大json文件? 所以我有一些相当大的json编码文件。 最小的是300MB,但这是迄今为止最小的。 其余的是多GB,从2GB到10GB左右。 所以当我尝试使用Python加载文件时,似乎内存不足。 我目前正在进行一些testing,看看处理这些事情要花多长时间才能看到从这里走到哪里。 这是我用来testing的代码: from datetime import datetime import json print datetime.now() f = open('file.json', 'r') json.load(f) f.close() print datetime.now() 不出所料,Python给了我一个MemoryError。 看来,json.load()调用json.loads(f.read()),它试图将整个文件转储到内存中,这显然是不会工作。 任何方式我可以干净地解决这个问题? 我知道这是旧的,但我不认为这是重复的。 虽然答案是一样的,但问题是不同的。 在“重复”中,问题是如何有效地读取大文件,而这个问题是处理根本不适合内存的文件。 效率不是必需的。
我有一个存储在numpy数组中的点x和y的范围。 那些表示x(t)和y(t),其中t = 0 … T-1 我正在绘制使用散点图 import matplotlib.pyplot as plt plt.scatter(x,y) plt.show() 我想有一个表示时间的颜色图(因此根据numpy数组中的索引给点着色) 最简单的方法是什么?
我有3个CSV文件。 每个人都有第一列作为(string)人名,而每个数据框中的所有其他列都是该人的属性。 如何将所有三个CSV文档“join”在一起,以创build一个单一的CSV文件,每行都具有该人员string名称的每个唯一值的所有属性? pandas中的join()函数指定我需要一个多重索引,但是我对于根据单个索引进行连接时分层索引scheme的作用感到困惑。
就我所知,Python中的variables只是指针。 基于这个规则,我可以假设这个代码片段的结果: i = 5 j = i j = 3 print(i) 会是3 。 但是我得到了意想不到的结果,那是5 。 此外,我的Python书籍涵盖了这个例子: i = [1,2,3] j = i i[0] = 5 print(j) 结果会是[5,2,3] 。 我是什么理解错误?
我一直在试图计数过车时的车辆,它的工作原理,但问题是它计数一次车多次这是荒谬的,因为它应该算一次 这是我正在使用的代码: import cv2 import numpy as np bgsMOG = cv2.BackgroundSubtractorMOG() cap = cv2.VideoCapture("traffic.avi") counter = 0 if cap: while True: ret, frame = cap.read() if ret: fgmask = bgsMOG.apply(frame, None, 0.01) cv2.line(frame,(0,60),(160,60),(255,255,0),1) # To find the countours of the Cars contours, hierarchy = cv2.findContours(fgmask, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) try: hierarchy = hierarchy[0] except: hierarchy = [] for […]
什么是最优雅的方式来解决这个问题: 打开一个文件阅读,但只有当它尚未打开写作 打开一个文件进行写作,但只有当它还没有被打开进行阅读或写作 内置函数就像这样工作 >>> path = r"c:\scr.txt" >>> file1 = open(path, "w") >>> print file1 <open file 'c:\scr.txt', mode 'w' at 0x019F88D8> >>> file2 = open(path, "w") >>> print file2 <open file 'c:\scr.txt', mode 'w' at 0x02332188> >>> file1.write("111") >>> file2.write("222") >>> file1.close() scr.txt现在包含'111'。 >>> file2.close() scr.txt被覆盖,现在包含'222'(在Windows上,Python 2.4)。 解决scheme应该在同一个进程内工作(就像上面的例子一样)以及另一个进程打开文件的时候。 最好是,如果一个崩溃的程序不会保持锁打开。
有一个内置/快捷的方式来使用一个字典列表来获取相应项目的列表? 比如我有: >>> mydict = {'one': 1, 'two': 2, 'three': 3} >>> mykeys = ['three', 'one'] 我如何使用mykeys来获取字典中的相应值作为列表? >>> mydict.WHAT_GOES_HERE(mykeys) [3, 1]
我想使用python下载谷歌图片search的所有图片。 我使用的代码似乎有一些问题。我的代码是 import os import sys import time from urllib import FancyURLopener import urllib2 import simplejson # Define search term searchTerm = "parrot" # Replace spaces ' ' in search term for '%20' in order to comply with request searchTerm = searchTerm.replace(' ','%20') # Start FancyURLopener with defined version class MyOpener(FancyURLopener): version = 'Mozilla/5.0 (Windows; […]
什么是在两个不同的python进程之间进行进程间通信的干净优雅的方式? 我目前在操作系统中使用命名pipe道,但感觉有点哈克。 我重写了我的东西与dbus服务,它的工作,但似乎通过SSH会话远程运行的代码,现在试图初始化X11这似乎完全不必要的事情,我想要做的事情(他们不是GUI相关)。 所以也许dbus有点太重了。 我正要重新devise使用套接字,但它似乎很低层次,所以我认为可能有一个更高级别的模块,我可以导入和使用,我根本不知道名称,我想我应该问的SO第一.. 我的要求是能够运行python foo.py并让该进程像守护进程一样执行它,并能够使用python foo.py –bar发送消息。 后者调用应该只是发送一个消息到现有的进程并终止,可能返回代码0成功或其他失败(所以一些双向通信将被要求)。
我有一个非常大的(只读)数据数组,我想要由多个进程并行处理。 我喜欢Pool.map函数,并希望使用它来并行计算该数据上的函数。 我看到可以使用Value或Array类在进程之间使用共享内存数据。 但是当我尝试使用这个时,我得到了一个RuntimeError:'SynchronizedString对象应该只在使用Pool.map函数时通过inheritance在进程之间共享: 这是我正在尝试做的一个简单的例子: from sys import stdin from multiprocessing import Pool, Array def count_it( arr, key ): count = 0 for c in arr: if c == key: count += 1 return count if __name__ == '__main__': testData = "abcabcs bsdfsdf gdfg dffdgdfg sdfsdfsd sdfdsfsdf" # want to share it using shared memory […]