Numpy: 였λ₯˜ : OS X + Python 3.3의 test_big_arrays (test_io.TestSavezLoad)

에 λ§Œλ“  2013λ…„ 10μ›” 03일  Β·  29μ½”λ©˜νŠΈ  Β·  좜처: numpy/numpy

Piet van Oostrum이 Python 3.3을 μ‚¬μš©ν•˜λŠ” OS X의 1.8.0rc1에 λŒ€ν•œ 메일 λ§λ¦¬μŠ€νŠΈμ—λ³΄κ³ ν–ˆμŠ΅λ‹ˆλ‹€.

======================================================================
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

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ•ˆλ…•ν•˜μ„Έμš”,

이 PR (https://github.com/python/cpython/pull/1705)둜 OSXμ—μ„œ 문제λ₯Ό ν•΄κ²°ν–ˆλ‹€κ³  μƒκ°ν•˜κΈ° λ•Œλ¬Έμ— Python 3.6, 3.7 및 3.8a의 λ§ˆμ§€λ§‰ 버전 μ—μ„œμ΄ 문제λ₯Ό μ‹œλ„ν•΄ λ³Ό 수 μžˆμŠ΅λ‹ˆκΉŒ?

2.7에 λŒ€ν•œ λ‹€λ₯Έ PR이 μžˆμ§€λ§Œ 아직 μ€€λΉ„λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

μ˜κ²¬μ„ 보내 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

λͺ¨λ“  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 λͺ¨λ‘ python.org의 dmgsμ—μ„œ μ„€μΉ˜λ©λ‹ˆλ‹€. bugs.python.orgμ—μ„œ 이에 λŒ€ν•œ 문제λ₯Ό 찾을 수 μ—†μ§€λ§Œ IIRC io λͺ¨λ“ˆμ΄ μ™„μ „νžˆ λ‹€μ‹œ μž‘μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

gh-2942에 λ„μž… 된 ν…ŒμŠ€νŠΈ.

μ•„λ‹ˆλ©΄ 이것이 또 λ‹€λ₯Έ OSX I / O λ²„κ·ΈμΌκΉŒμš”? κΈ°μ–΅ν•˜μ„Έμš”, OSX libcλŠ” 버그가 있고 2 ** 32에 κ°€κΉŒμš΄ 데이터 블둝을 λ‹€λ£° λ•Œ fwrite / fread에 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

μ–΄μ¨Œλ“  μš°λ¦¬λŠ” λΆ„λͺ…νžˆ μ“°κΈ°λ₯Ό λΆ„ν• ν•˜μ—¬ ν•΄κ²°ν•΄μ•Όν•©λ‹ˆλ‹€.
더 μž‘μ€ λ©μ–΄λ¦¬λ‘œ, κ·Έλ ‡μ£ ?

(ꢁ극적으둜 libc의 잘λͺ»μ΄λ”라도 νŒŒμ΄μ¬μ€ μ•„λ§ˆλ„
그것 자체-μ•„λ§ˆλ„ 2.7은
전이.)
2013 λ…„ 10 μ›” 3 일 10:03에 "Pauli Virtanen" [email protected]이 μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

μ•„λ‹ˆλ©΄ 이것이 또 λ‹€λ₯Έ OSX I / O λ²„κ·ΈμΌκΉŒμš”? κΈ°μ–΅ν•˜μ„Έμš”, OSX libcλŠ” 버그가 있고
2 ** 32에 κ°€κΉŒμš΄ 데이터 블둝을 λ‹€λ£° λ•Œ fwrite / fread의 문제 ...

β€”
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ Gi tHubμ—μ„œ 확인 ν•˜μ„Έμš”.
.

Re : gh-574 및 gh-2806 및 gh-3473 문제의 OSX 버전이 κ΄€λ ¨μ΄μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 이전과 같이 μ“°λ ˆκΈ°λ₯Ό μž‘μ„±ν•˜λŠ” λŒ€μ‹  μ‹€νŒ¨ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

예, 청킹을 톡해 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ•„λ§ˆλ„μ΄ λ¬Έμ œλŠ” 파이썬 κ°œλ°œμžμ—κ²Œλ„ μ „λ‹¬λ˜μ–΄μ•Όν•΄μ„œ 청킹을 슀슀둜 κ΅¬ν˜„ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

μ•„, κ·Έ λ¬Έμ œλŠ” μžŠμ–΄ λ²„λ ΈμŠ΅λ‹ˆλ‹€. λ‚΄ 10.6 μ»΄ν“¨ν„°μ—μ„œ ν…ŒμŠ€νŠΈλ₯Ό μ‹œλ„ν–ˆμ§€λ§Œ λ™μΌν•œ μŠ€ν¬λ¦½νŠΈκ°€ μ€‘λ‹¨λ©λ‹ˆλ‹€. ν•˜λ“œμ›¨μ–΄ λ•Œλ¬ΈμΌ 수 μžˆμ§€λ§Œ κ³ λŒ€ κΈ°κ³„μž…λ‹ˆλ‹€.

1.8.0 μ°¨λ‹¨κΈ°μž…λ‹ˆκΉŒ? μžŠν˜€μ§€μ§€ μ•Šκ³  항상 제거 ν•  수 μžˆλ„λ‘ 거기에 넣을 κ²ƒμž…λ‹ˆλ‹€. Python 3.2μ—μ„œ μž‘λ™ν•˜λŠ”μ§€ μ•„λŠ” μ‚¬λžŒμ΄ μžˆμŠ΅λ‹ˆκΉŒ?

λ˜ν•œ IIRC, μš°λ¦¬λŠ” 청크 된 μ½κΈ°λ§Œν–ˆμŠ΅λ‹ˆλ‹€. λŒ€μš©λŸ‰ νŒŒμΌμ„ μ“°λŠ” ν…ŒμŠ€νŠΈκ°€ μ†μƒλ˜μ—ˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 이것에 λŒ€ν•œ 릴리슀λ₯Ό 보λ₯˜ν•˜μ§€ μ•Šμ„ κ²ƒμž…λ‹ˆλ‹€. νšŒκ·€κ°€ μ•„λ‹™λ‹ˆλ‹€. 릴리슀 전에 μ‹€νŒ¨ν•˜μ§€ μ•Šμ€ 경우 1.8.x λΈŒλžœμΉ˜μ—μ„œ μ•Œλ €μ§„ μ‹€νŒ¨λ‘œ ν‘œμ‹œν•˜μ‹­μ‹œμ˜€.

@rgommers OSX 및 3.3μ—μ„œλ§Œ μ‹€νŒ¨ν•˜λ©΄ μž‘λ™ν•©λ‹ˆκΉŒ? 파이썬 2.7μ—μ„œ μž‘λ™ν•œλ‹€κ³  λ§ν–ˆλŠ”λ° λ§žμŠ΅λ‹ˆκΉŒ?

2.7μ—μ„œλŠ” μ‹€νŒ¨ν•˜μ§€ μ•Šμ§€λ§Œ ν…ŒμŠ€νŠΈλŠ” νŒŒμΌμ— 기둝 된 λ‚΄μš©μ΄ μ˜¬λ°”λ₯Έμ§€ ν™•μΈν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ •ν™•ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. Pauliκ°€ μ—°κ²° ν•œ λ‹€λ₯Έ 문제λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

@rgommers 일반적으둜 OSXμž…λ‹ˆλ‹€. μˆ˜μ •μ— 동기λ₯Ό λΆ€μ—¬ν•˜κ³  문제λ₯Ό μ—΄κΈ° μœ„ν•΄ 1.9-develμ—μ„œ μ—΄μ–΄ λ‘κ² μŠ΅λ‹ˆλ‹€.

이것은 OS X Mavericksμ—μ„œ μˆ˜μ • 된 κ²ƒμœΌλ‘œλ³΄κ³ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ μ ˆν•œ μˆ˜μ •μ€ OSλ₯Ό μ—…κ·Έλ ˆμ΄λ“œν•˜λŠ” κ²ƒμ΄λ―€λ‘œ μ•„λ§ˆλ„ μˆ˜μ •λ˜μ§€ μ•Šμ„ κ²ƒμž…λ‹ˆλ‹€.

# 2931도 μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

폐쇄, Mavericks에 μ˜ν•΄ μˆ˜μ •λ˜μ–΄μ•Όν•©λ‹ˆλ‹€. λ¬Έμ œκ°€ μ§€μ†λ˜λ©΄ λ‹€μ‹œμ—¬μ‹­μ‹œμ˜€.

이것은 Anaconda의 numpy 1.8.1 및 python 3.4 (λ˜ν•œ 3.3)λ₯Ό μ‚¬μš©ν•˜λŠ” Mavericksμ—μ„œ μ—¬μ „νžˆ λ°œμƒν•©λ‹ˆλ‹€. skipif λ°μ½”λ ˆμ΄ν„°λ₯Ό 주석 μ²˜λ¦¬ν•˜λ©΄ https://github.com/numpy/numpy/blob/v1.8.1/numpy/lib/tests/test_io.py#L154 κ°€ μ‹€νŒ¨ν•©λ‹ˆλ‹€.

ν…ŒμŠ€νŠΈλ₯Ό ν†΅κ³Όν•˜κ³  Anaconda의 python 2.7을 μ‚¬μš©ν•˜μ—¬ 데이터가 μ˜¬λ°”λ₯΄κ²Œλ‘œλ“œ 된 κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€.

이것은 λ°˜λ“œμ‹œ numpy의 결함은 μ•„λ‹ˆμ§€λ§Œ λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄μ΄ 문제 λ˜λŠ” μœ μ‚¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. 예 : https://github.com/torch/torch7-distro/commit/40e65934e071e452f194a9d8c0fd740131babefa λ˜ν•œ 파이썬 3)μ—μ„œ 큰 νŒŒμΌμ„ 읽을 수 μ—†μŠ΅λ‹ˆλ‹€.

Mac OS X 10.9.4 (Mavericks)μ—μ„œ numpy 1.8.1κ³Ό ν•¨κ»˜ Python 3.4λ₯Ό μ‚¬μš©ν•˜μ—¬ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό μ‹€ν–‰ν•˜λ©΄ μ•Œλ €μ§„ OSError: [Errno 22] Invalid argument 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. @certik 문제λ₯Ό λ‹€μ‹œμ—¬μ‹­μ‹œμ˜€!

또 λ‹€λ₯Έ 데이터 포인트-OSX 10.9.5 (Mavericks)λ₯Ό μ‚¬μš©ν•˜λ©΄ λ™μΌν•œ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. 방금 파이썬 μΆ”μ κΈ°μ—μ„œμ΄ 버그λ₯Ό λ³΄μ•˜μŠ΅λ‹ˆλ‹€ : https://bugs.python.org/issue24658

이것을 λ‹€μ‹œ μ—΄ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 파이썬이 뢀뢄을 ν•΄κ²°ν•  λ•Œ 고쳐질 지 λͺ¨λ₯΄κ² μ§€λ§Œ μš°λ¦¬λŠ” μ•Œμ•„λ‚Ό κ²ƒμž…λ‹ˆλ‹€.

μ—¬κΈ°μ—μ„œ μ΅œμ‹  macOS, python (3.6) 및 numpyκ°€ λ°œμƒν•©λ‹ˆλ‹€.

참고둜 μ΅œμ‹  macOS (10.12.6) 및 Python 3.5.2 (Anaconda 4.2.0)μ—μ„œμ΄ 버그가 계속 ν‘œμ‹œλ©λ‹ˆλ‹€.
청크 크기의 μƒν•œμ„ μ•Œμ•„ λ‚Έ μ‚¬λžŒμ΄ μžˆμŠ΅λ‹ˆκΉŒ?

이 였λ₯˜κ°€ λ°œμƒν•˜λ©΄ macOS Sierra, python 3.6, numpy

파이썬 λ¬Έμ œμ— λŒ€ν•œ μ›€μ§μž„μ΄μžˆλŠ” 것 κ°™μ§€λ§Œ μ•„λ§ˆλ„ μš°λ¦¬λŠ” κ³„μ†ν•΄μ„œ μ“°κΈ°λ₯Ό μ²­ν¬ν•΄μ•Όν•©λ‹ˆλ‹€.

μ‘°λ§Œκ°„ μ—…μŠ€νŠΈλ¦Όμ—μ„œ μˆ˜μ •λ˜μ§€ μ•Šμ„ 것 κ°™μŠ΅λ‹ˆλ‹€. λˆ„κ΅¬λ‚˜ μ΅œμ‹  μƒνƒœλ₯Ό μ•Œκ³  μžˆμŠ΅λ‹ˆκΉŒ?

μ•ˆλ…•ν•˜μ„Έμš”,

이 PR (https://github.com/python/cpython/pull/1705)둜 OSXμ—μ„œ 문제λ₯Ό ν•΄κ²°ν–ˆλ‹€κ³  μƒκ°ν•˜κΈ° λ•Œλ¬Έμ— Python 3.6, 3.7 및 3.8a의 λ§ˆμ§€λ§‰ 버전 μ—μ„œμ΄ 문제λ₯Ό μ‹œλ„ν•΄ λ³Ό 수 μžˆμŠ΅λ‹ˆκΉŒ?

2.7에 λŒ€ν•œ λ‹€λ₯Έ PR이 μžˆμ§€λ§Œ 아직 μ€€λΉ„λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

μ˜κ²¬μ„ 보내 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

@rgommers 이것을 ν…ŒμŠ€νŠΈ ν•  μˆ˜μžˆλŠ” κΈ°νšŒκ°€ μžˆμŠ΅λ‹ˆκΉŒ? ν˜„μž¬ μƒνƒœμ— λŒ€ν•œ λ‹€λ₯Έ ν”Όλ“œλ°±μ€ ν™˜μ˜ν•©λ‹ˆλ‹€.

test_big_arrays ν…ŒμŠ€νŠΈλŠ” ν†΅κ³Όν–ˆμ§€λ§Œ https://github.com/numpy/numpy/issues/3858#issuecomment -25607105λŠ” Anacondaμ—μ„œ μ œκ³΅ν•˜λŠ” μ΅œμ‹  Python 3.6μ—μ„œ μ—¬μ „νžˆ μ‹€νŒ¨ν•©λ‹ˆλ‹€. 그것은 μ•„λ§ˆλ„ CPython μˆ˜μ •μ΄ 없을 κ²ƒμž…λ‹ˆλ‹€. μ§€κΈˆμ€ Python을 직접 λΉŒλ“œ ν•  μ‹œκ°„μ΄ μ—†μŠ΅λ‹ˆλ‹€. μ£„μ†‘ν•©λ‹ˆλ‹€.

@rgommers 이것을 λ‹€μ‹œ λ°©λ¬Έ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

이것은 적어도 Anaconda의 Python 3.7μ—μ„œ λ‚΄κ°€ 말할 μˆ˜μžˆλŠ” ν•œ μ‹€μ œλ‘œ μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ λ³΄κ³ μ„œλ„ μ—†μœΌλ―€λ‘œ λ‹«μŠ΅λ‹ˆλ‹€. λͺ¨λ‘μ—κ²Œ 감사 λ“œλ¦¬λ©° 특히이 문제λ₯Ό ν•΄κ²°ν•΄ μ£Όμ‹  @matrixise 에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰