Windows 7 64bi上的Python Joblib内存错误

2024-04-26 11:12:34 发布

您现在位置:Python中文网/ 问答频道 /正文

在运行一个程序时,我无法计算内存错误,该程序并行于Amazon托管的xml文件的读取,该程序在运行windows7 64位的Windows计算机上包含990个纳税申报表数据。在

我遍历从本地下载的CSV到每个XML的id索引(大约有200000个):

URLs = 'https://s3.amazonaws.com/irs-form-990/' + df990Orgs['OBJECT_ID'].astype(str) + '_public.xml'

然后,我使用一个并行化的for循环,用我编写的XML解析器提取所有数据,并返回一个包含所有字段及其值的字典(大约200个字段对应200000条记录):

^{pr2}$

然后,我从ListRows创建一个pandas数据帧并将其保存为CSV:

df = pd.DataFrame(ListRows)        
df.to_csv('OrgInfo' + strname + '.csv')

如果我只对10000个元素运行并行化循环,它运行得很好,并且我得到一个填充的CSV。但是,如果我让它针对所有条目运行(大约200000个),那么在运行期间不可避免地会出现以下错误:

Exception in thread Thread-3:
Traceback (most recent call last):
  File "C:\Users\jnimgaonkar\AppData\Local\Programs\Python\Python36-32\lib\threading.py", line 916, in _bootstrap_inner
  File "C:\Users\jnimgaonkar\AppData\Local\Programs\Python\Python36-32\lib\threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\jnimgaonkar\AppData\Local\Programs\Python\Python36-32\lib\multiprocessing\pool.py", line 463, in _handle_results
task = get()
  File "C:\Users\jnimgaonkar\AppData\Local\Programs\Python\Python36-32\lib\multiprocessing\connection.py", line 250, in recv
  File "C:\Users\jnimgaonkar\AppData\Local\Programs\Python\Python36-32\lib\multiprocessing\connection.py", line 318, in _recv_bytes
    return self._get_more_data(ov, maxsize)
  File "C:\Users\jnimgaonkar\AppData\Local\Programs\Python\Python36-32\lib\multiprocessing\connection.py", line 344, in _get_more_data
    f.write(ov.getbuffer())
MemoryError

奇怪的是,我在我的macbook air上运行它时没有出现任何错误(它只有4GB的RAM)-整个程序编译得非常完美,我在我的机器上得到了一个记录数正确的CSV。在

从我试图解决这个问题的研究中,我知道这可能与Windows不能fork()有关(或者至少不方便),但我不知道如何利用这些信息来找到解决方案。如果您能给我任何帮助,我将不胜感激。谢谢您。在


Tags: csvinpyself程序liblocalline