cython

Форк
0
/
buffer.pyx 
56 строк · 1.2 Кб
1
__doc__ = u"""
2
>>> b1 = TestBuffer()
3
>>> b2 = TestBufferRelease()
4

5
>>> ms = memoryview(s)
6
>>> ms.tobytes()
7
b'abcdefg'
8

9
>>> m1 = memoryview(b1)
10
__getbuffer__ called
11

12
Semantics changed in python 3.3
13
>> m1.tobytes()
14
__getbuffer__ called
15
b'abcdefg'
16

17
>>> m2 = memoryview(b2)
18
__getbuffer__ called
19

20
Semantics changed in python 3.3
21
>> m2.tobytes()
22
__getbuffer__ called
23
releasing!
24
b'abcdefg'
25

26
>>> del m1
27
>>> del m2
28
releasing!
29
"""
30

31
s = b"abcdefg"
32

33
cdef class TestBuffer:
34
    def __getbuffer__(self, Py_buffer* buffer, int flags):
35
        print u"__getbuffer__ called"
36
        buffer.buf = <char*>s
37
        buffer.obj = self
38
        buffer.len = len(s)
39
        buffer.readonly = 0
40
        buffer.format = "B"
41
        buffer.ndim = 0
42
        buffer.shape = NULL
43
        buffer.strides = NULL
44
        buffer.suboffsets = NULL
45
        buffer.itemsize = 1
46
        buffer.internal = NULL
47

48
cdef class TestBufferRelease(TestBuffer):
49
    def __releasebuffer__(self, Py_buffer* buffer):
50
        print u"releasing!"
51

52
cdef class TestCompileWithDocstring(object):
53
    def __getbuffer__(self, Py_buffer* buffer, int flags):
54
        "I am a docstring!"
55
    def __releasebuffer__(self, Py_buffer* buf):
56
        "I am a docstring!"
57

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.