Numpy: рдмрдЧ: PyArray_BufferConverter рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдЬрдире░ 2020  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: numpy/numpy

рдпрд╣ рд╕рдорд╛рд░реЛрд╣:

  1. PyObject_GetBuffer рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ
  2. рдПрдХ рдбреЗрдЯрд╛ рдкреЙрдЗрдВрдЯрд░ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ
  3. PyBuffer_Release рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ
  4. рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдкреЙрдЗрдВрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ

PyBuffer_Release PyBufferProcs.bf_releasebuffer(PyObject *exporter, Py_buffer *view) , рдЬреЛ рдбреЙрдХреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ _ " view " _ рд╕реЗ рдЬреБрдбрд╝реА рд╕рднреА рдореЗрдореЛрд░реА рдореБрдХреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ view рдЬреАрд╡рд┐рдд рд░рд╣реЗрдВред рдЬрдм рддрдХ exporter ред

рддреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдЬреЛ bf_getbuffer рдореЗрдВ рдордХреНрдЦреА рдкрд░ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдлрд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдЬрдм рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рдж рдХреЗ рдЦрд╕рд░реЗ рдореЗрдВ рдореБрдХреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдмрдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХрд░реНрддрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рдпрд╣ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрдорддрд┐ рд╣реИред

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рдЕрдЬреАрдм рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдмрдлрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдмрдлрд░ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлрд╝реАрд▓реНрдбреНрд╕ (рдЬреИрд╕реЗ рд╕реНрдЯреНрд░рд╛рдЗрдбреНрд╕, рдЗрддреНрдпрд╛рджрд┐) PyBuffer_Release рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЗрдореЛрд░реА рдХреЛ рдореВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рдж _dealloc_cached_buffer_info ) рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд░рд╛рджрд╛ рд╣реИ рдФрд░ рд╕рдЪ рд╣реИ, рд▓реЗрдХрд┐рди ...

рдЕрдм рдпрд╣ рдлрд╝рдВрдХреНрд╢рди PyArray_Chunk рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдФрд░ рдмрдлрд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдКрдкрд░ рдХрд╣рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реИред

рдЖрдкрдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рд▓рдЧрддреА рд╣реИ - рд╢рд╛рдпрдж рдЕрдЬрдЧрд░ / рдХрдлрд╝рди рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдмреБрджреНрдзрд┐рдорд╛рди рд╣реЛрдЧрд╛, рдбреЙрдХреНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдЦреБрд▓рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рджреЛрдкрд╣рд░ рдХреЗ рднреЛрдЬрди рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЧрдпрд╛: https://bugs.python.org/issue39471 рдореИрдВ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╛рда рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдореЗрд░реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдкрд░ рд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдмрдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдмрд╣реБрдд рд╣реА рдмрджрд╕реВрд░рдд рдФрд░ рдмрд╣реБрдд рдзреАрдореЗ рдХреЛрдб рдХреЛ рд╕рд╛рдл рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реНрдХреЗрд▓рд░ рдЧрдгрд┐рдд рдХреЛ 20 +% рддрдХ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ)ред (рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдпрдерди рджреНрд╡рд╛рд░рд╛ рдЙрдирдХреЗ ArgParse рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА :()

рдпрд╣ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯрддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж - рдореБрдЭреЗ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рд╣реБрдЖ рдерд╛ рдХрд┐ рдЕрдЬрдЧрд░ рдореЗрд░реЗ рдЬреИрд╕рд╛ рд╣реА bf_releasebuffer рдкрдарди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдзрд┐рдХреНрдХрд╛рд░ рд╣реИ, рдореИрдВ рдкрд╣рд▓реЗ (рдкреАрдИрдкреА рд╕реЗ) рдмрд╣реБрдд рдЖрдЧреЗ рдерд╛:

рдирд┐рд░реНрдпрд╛рддрдХреЛрдВ рдХреЛ bf_releasebuffer рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдпрджрд┐ рд╡реЗ рдЕрдкрдиреА рдореЗрдореЛрд░реА, рд╕реНрдЯреНрд░реИрдбреНрд╕, рд╢реЗрдк, рд╕рдмрдСрдлрд╝рд╕реЗрдЯреНрд╕ рдпрд╛ рдлреЙрд░реНрдореЗрдЯ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рд╡реЗ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдмрдлрд░рд┐рдирдлреЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЬреЛ рдпрд╣ рдкрдврд╝рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрдлрд░ рдХреЛ рдореЗрдореЛрд░реА рдХрд╛ рдПрдХ рдирдпрд╛ рд╣рд┐рд╕реНрд╕рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдз рд╣реИ :(

рдпрджреНрдпрдкрд┐: array (рдЕрдЬрдЧрд░ рдПрдХ) рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рд╕рдм рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдпрд╣ рдмрдлрд░ рдореМрдЬреВрдж рд╣реИ рддреЛ рдпрд╣ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдореЗрдВ рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕