从数据库中提取数据时避免使用SIGSEGV

时间:2018-06-11 03:46:47

标签: python-3.x

我有一个Python应用程序,从数据库/索引(ElasticSearch)中提取一批2500个被抓取的网站,处理它们,并将它们保存在磁盘上。

这些网站的规模自然会有很大差异。有时我在处理过程中会遇到分段错误错误。我得出的结论是,由于内存不足,我可以通过关闭所有其他应用程序来消除这些错误。

代码看起来像这样:

In [20]: now = datetime.now()

In [21]: dir(now)
Out[21]:
['__add__',...
 'astimezone',...
  'weekday',
 'year']

错误通常发生在from elasticsearch_dsl import Search from multiprocessing import Pool s = Search().using(client).index(index) .query(...).query(...).source([...]) for part, chunk in enumerate(chunks(s.scan(), BATCH_SIZE)): with Pool(processes = CPU_COUNT) as pool: result = [hit for hit in pool.map_async(Process(index), chunk).get()] save_result(result, ...) def chunks(iterable, size): iterator = iter(iterable) for first in iterator: yield itertools.chain([first], itertools.islice(iterator, size - 1)) 行内。 result = [...]方法只是将拉出的网站的某些字段存储到Process.__call__()中并将其返回:

dict

问题:是否可以通过分段错误使python 崩溃?也许让他使用交换?我可以通过某种方式修改代码来防止这种情况吗?

0 个答案:

没有答案