]> granicus.if.org Git - python/commitdiff
Add example to mmap docs.
authorGeorg Brandl <georg@python.org>
Sun, 2 Dec 2007 14:34:34 +0000 (14:34 +0000)
committerGeorg Brandl <georg@python.org>
Sun, 2 Dec 2007 14:34:34 +0000 (14:34 +0000)
Written for GHOP by Rafal Rawicki.

Doc/library/mmap.rst

index 0e982c14c17d99dbd03702b8a57c7c20ddcc38ed..070ce4feb696dbbe9c97ca4b2886b01126c8d7e6 100644 (file)
@@ -86,6 +86,49 @@ not update the underlying file.
    *offset* may be specified as a non-negative integer offset. mmap references will 
    be relative to the offset from the beginning of the file. *offset* defaults to 0.
    *offset* must be a multiple of the PAGESIZE or ALLOCATIONGRANULARITY.
+   
+   This example shows a simple way of using :func:`mmap`::
+
+      import mmap
+
+      # write a simple example file
+      with open("hello.txt", "w") as f:
+          f.write("Hello Python!\n")
+
+      with open("hello.txt", "r+") as f:
+          # memory-map the file, size 0 means whole file
+          map = mmap.mmap(f.fileno(), 0)
+          # read content via standard file methods
+          print map.readline()  # prints "Hello Python!"
+          # read content via slice notation
+          print map[:5]  # prints "Hello"
+          # update content using slice notation;
+          # note that new content must have same size
+          map[6:] = " world!\n"
+          # ... and read again using standard file methods
+          map.seek(0)
+          print map.readline()  # prints "Hello  world!"
+          # close the map
+          map.close()
+
+
+   The next example demonstrates how to create an anonymous map and exchange
+   data between the parent and child processes::
+
+      import mmap
+      import os
+
+      map = mmap.mmap(-1, 13)
+      map.write("Hello world!")
+
+      pid = os.fork()
+
+      if pid == 0: # In a child process
+          map.seek(0)
+          print map.readline()
+
+          map.close()
+
 
 Memory-mapped file objects support the following methods: