Skip to content

Instantly share code, notes, and snippets.

@hideaki-t
Created May 28, 2013 18:34
Show Gist options
  • Save hideaki-t/5665004 to your computer and use it in GitHub Desktop.
Save hideaki-t/5665004 to your computer and use it in GitHub Desktop.
Python 3+ can handle native types in mmaped region with memoryview
{
"metadata": {
"name": "mmap with native type"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": "import mmap",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": "m = mmap.mmap(-1, 64)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": "mv = memoryview(m)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": "mv.format",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 4,
"text": "'B'"
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": "mv_as_16bit_int = mv.cast('H')",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": "mv_as_16bit_int.format",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 6,
"text": "'H'"
}
],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": "mv_as_16bit_int[0] = 0xff0f",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": "hex(mv[0])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 8,
"text": "'0xf'"
}
],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": "hex(mv[1])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 9,
"text": "'0xff'"
}
],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": "hex(m[0])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 10,
"text": "'0xf'"
}
],
"prompt_number": 10
},
{
"cell_type": "code",
"collapsed": false,
"input": "hex(m[1])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 11,
"text": "'0xff'"
}
],
"prompt_number": 11
},
{
"cell_type": "code",
"collapsed": false,
"input": "hex(mv_as_16bit_int[0])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 12,
"text": "'0xff0f'"
}
],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": "m[1] = 0xde",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 13
},
{
"cell_type": "code",
"collapsed": false,
"input": "m[0] = 0xad",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
},
{
"cell_type": "code",
"collapsed": false,
"input": "hex(mv_as_16bit_int[0])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 15,
"text": "'0xdead'"
}
],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": "",
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment