Numpy: ОШИБКА: test_big_arrays (test_io.TestSavezLoad) в OS X + Python 3.3

Созданный на 3 окт. 2013  ·  29Комментарии  ·  Источник: numpy/numpy

Об этом сообщил Пит ван Оострам в списке рассылки против 1.8.0rc1 в OS X с Python 3.3:

======================================================================
ERROR: test_big_arrays (test_io.TestSavezLoad)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numpy/testing/decorators.py", line 146, in skipper_func
    return f(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numpy/lib/tests/test_io.py", line 149, in test_big_arrays
    np.savez(tmp, a=a)
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numpy/lib/npyio.py", line 530, in savez
    _savez(file, args, kwds, False)
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numpy/lib/npyio.py", line 589, in _savez
    format.write_array(fid, np.asanyarray(val))
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numpy/lib/format.py", line 417, in write_array
    fp.write(array.tostring('C'))
OSError: [Errno 22] Invalid argument
00 - Bug numpy.lib

Самый полезный комментарий

Привет всем,

Не могли бы вы попробовать эту проблему с последней версией Python 3.6, 3.7 и 3.8a, потому что я думаю, что исправил проблему в OSX с помощью этого PR (https://github.com/python/cpython/pull/1705).

У меня есть другой пиар для 2.7, но этот еще не готов: /

Спасибо за ваш отзыв.

Все 29 Комментарий

Я могу воспроизвести это. Похоже на ошибку Python 3.x.

import os
import sys
import time


if sys.maxsize > 2**32:
    print('64-bit')
else:
    print('32-bit, exiting')
    sys.exit(0)

fname = 'write_large_bytestring.txt'
tmp = open(fname, 'wb')
try:
    L = (1 << 31) + 100000
    tmp.write(b'abc' * 2**32)
finally:
    tmp.close()
    os.remove(fname)
    print('Elapsed time: %s s' % time.clock())

Вышеупомянутое работает с Python 2.7, но не с 3.3:

$ python tmp3.py 
64-bit
Elapsed time: 7.896957 s

$ python3.3 tmp3.py 
64-bit
Elapsed time: 50.149956 s
Traceback (most recent call last):
  File "tmp3.py", line 16, in <module>
    tmp.write(b'abc' * 2**32)
OSError: [Errno 22] Invalid argument

$ ulimit
unlimited

Оба Python устанавливаются из dmgs на python.org. Я не могу найти проблему для этого на bugs.python.org, но IIRC модуль io был полностью переписан.

Тест представлен в GH-2942.

Или, может быть, это еще одна ошибка ввода-вывода OSX? Помните, OSX libc содержит ошибки и имеет проблемы с fwrite / fread при работе с блоками данных, близкими к 2 ** 32, которые нам пришлось обойти в tofile / fromfile ...

В любом случае, нам, очевидно, нужно обойти это, разделив запись
на более мелкие куски, правда?

(Даже если в конечном итоге это ошибка libc, python, вероятно, должен обойти
он сам - возможно, у 2.7 был код для этого, который потерялся в
переход.)
3 октября 2013 г. в 10:03 «Паули Виртанен» [email protected] написал:

Или, может быть, это еще одна ошибка ввода-вывода OSX? Помните, что OSX libc содержит ошибки и
проблемы в fwrite / fread при работе с блоками данных, близкими к 2 ** 32 ...

-
Ответьте на это письмо напрямую или просмотрите его на Gi tHubhttps: //github.com/numpy/numpy/issues/3858#issuecomment -25607852
.

Re: gh-574, gh-2806 и gh-3473. Рассматриваемая версия OSX может быть актуальной, возможно, теперь она не работает, а не пишет мусор, как это было раньше?

Да, мы можем обойти это, разбив на части. Возможно, эту проблему также следует передать разработчикам Python, чтобы они также могли реализовать фрагменты самостоятельно ...

Ах, забыл об этих проблемах. Пытался протестировать на своей машине 10.6, но там тот же скрипт просто зависает. Может быть, из-за оборудования, это древняя машина.

Это блокировщик 1.8.0? Я собираюсь положить его туда, чтобы его не забыли, его всегда можно было удалить. Кто-нибудь знает, работает ли он на Python 3.2?

Кроме того, IIRC, мы только фрагментировали чтение, возможно, тест, записывающий большой файл, не работает.

Я бы не стал откладывать релиз на этот раз, это не регресс. Отметьте его как известную неудачу в ветке 1.8.x, если она не была неудачной до выпуска.

@rgommers Если не работает только с OSX и 3.3? Вы говорите, что это работает для Python 2.7, это правильно?

Для 2.7 это не дает сбоев, но тест не проверяет правильность того, что записано в файл. Скорее всего, это неверно, см. Другие проблемы, связанные с Паули.

@rgommers Итак, OSX в целом. Я оставлю его открытым в 1.9-devel, чтобы мотивировать исправление и открыть проблему.

Сообщается, что это исправлено в OS X Mavericks. Это, вероятно, не исправит, так как правильное решение - обновить ОС.

См. Также # 2931.

Закрытие должно быть исправлено Mavericks. Пожалуйста, откройте снова, если проблема не исчезнет.

Это все еще происходит со мной на Mavericks с numpy 1.8.1 и python 3.4 (также 3.3) от Anaconda; если я закомментирую декоратор skipif , https://github.com/numpy/numpy/blob/v1.8.1/numpy/lib/tests/test_io.py#L154 завершится ошибкой.

Тест проходит успешно, и данные загружаются правильно с использованием Python 2.7 от Anaconda.

Это не обязательно недостаток numpy, но другие, похоже, работают над этой или подобными проблемами, например https://github.com/torch/torch7-distro/commit/40e65934e071e452f194a9d8c0fd740131babefa (который предназначен для чтения, а не для записи, но Я также не могу читать большие файлы на python 3).

Запуск тестового примера с использованием Python 3.4 с numpy 1.8.1 в Mac OS X 10.9.4 (Mavericks) приводит к известной ошибке OSError: [Errno 22] Invalid argument . @certik Пожалуйста,

Еще одна точка данных - использование OSX 10.9.5 (Mavericks), и у меня такая же проблема. Я только что увидел эту ошибку в трекере Python: https://bugs.python.org/issue24658

Можно было бы снова открыть это. Я не знаю, будет ли это исправлено, когда Python решит их часть, но мы узнаем.

Здесь случается последняя версия macOS, python (3.6) и numpy.

К вашему сведению, эта ошибка все еще наблюдается в последних версиях macOS (10.12.6) и Python 3.5.2 (Anaconda 4.2.0).
Кто-нибудь выяснил верхний предел размеров чанков?

Получение этой ошибки также, macOS Sierra, python 3.6, numpy

Похоже, что есть какое-то движение по проблеме Python, но, возможно, нам следует просто пойти дальше и разбить записи.

Похоже, что в ближайшее время это не будет исправлено в апстриме. Кто-нибудь знает последний статус?

Привет всем,

Не могли бы вы попробовать эту проблему с последней версией Python 3.6, 3.7 и 3.8a, потому что я думаю, что исправил проблему в OSX с помощью этого PR (https://github.com/python/cpython/pull/1705).

У меня есть другой пиар для 2.7, но этот еще не готов: /

Спасибо за ваш отзыв.

@rgommers Есть ли шанс проверить это? Любые другие отзывы о текущем статусе будут приветствоваться.

Тест test_big_arrays проходит, но https://github.com/numpy/numpy/issues/3858#issuecomment -25607105 по-прежнему не работает для меня с последней версией Python 3.6, поставляемой Anaconda. Однако это, вероятно, не имеет исправления CPython. Нет времени самому собирать Python, извините.

@rgommers, можешь еще раз вернуться к этому?

Насколько я могу судить, это действительно исправлено, по крайней мере, в Python 3.7 от Anaconda. Других отчетов тоже нет, так что закрытие. Спасибо всем, и особенно @matrixise за исправление этой

Была ли эта страница полезной?
0 / 5 - 0 рейтинги