Есть ли средства для питон, позволяющие получить прямой доступ к памяти?

Есть ли средства для питон, которые бы позволили напрямую обращаться к памяти?
14 ответов

Уточните к какой именно памяти/для чего. Потому что в общем и целом ответ нет, в частностях - возможно.


Не тот язык ты выбрал, чтобы работать на прямую с памятью


Это точно, Питон не для этого.


Уточните к какой именно памяти/для чего. Потому что в общем и целом ответ нет, в частностях - возможно.
К оперативки.


К оперативки.
Ладно, какой вопрос - такой ответ... Что Вы подразумеваете: выделить кусок памяти чем-нибудь аля malloc, запись в переменную аля разыменование указателя, или что другое?.. Повторю, в целом ответ - нет; а в тех случаях когда - да, это не настолько "прямо", как в том же Си, ибо же ж, как было сказано, дважды, не для того питон предназначали...


Да, выделение памяти, удаление. Вот эти операции.


Volobuev Ilya, а зачем? Что вы потом с этой памятью собираетесь делать?


Нет, я просто спросил, мне было интересно можно ли работать с памятью там или нет. Возможно, бы написал реализацию списков на указателях.


memoryview + bytearray - опосредованное выделение памяти; mmap ближе к низам, позволяет не только резать память на ломти, но и совместное их использование разными процессами (mmap иногда используется модулями в качестве аллокатора); упомяну и array...ctypes. Здесь есть близкие к земле штуки. Как правило это create_string_buffer, которая принимает размер буфера, и возвращает нечто похожее на сишный массив чаров (впрочем, работать прямиком с/через указатели на сию память все равно не позволено; извернуться, конечно, можно, но не нужно). Есть указатели; посредством их можно натворить всякого, скажем, безудержу писать фигню куда не надо (или читать)... Можно даже так
ptr = ctypes.pythonapi.PyMem_Malloc(size)
# хм, и что мне делать с этим указателем?
ctypes.pythonapi.PyMem_Free(ptr)
и даже malloc можно. Полученный таким способом кусок памяти, не несет почти ни какой практической пользы. Писать непосредственно в него можно только чем-то вроде memset, memcpy и пр. сишными функциями. ...


Ладно, хорошо, понятно, что нельзя использовать тут указатели по нормальному.


Зачем реализовывать "списки на указателях", если в питоне есть свои замечательные родные списки?


oldnewyear, просто мсье знает толк в извращениях.


Знает, да. Просто было бы интересно списки самому сделать. В питоне же у нас все почти готовое, как то не интересно. Ну не всегда же готовой под рукой. Я не знаю, может у кого то склероз будет, и ему придется писать списки на указателях потому то забудет про родной list().Ну это шутка


Просто было бы интересно списки самому сделать. В питоне же у нас все почти готовое, как то не интересно.
Так что мешаает?