MCPcopy Index your code
hub / github.com/python/cpython / __init__

Method __init__

Lib/multiprocessing/shared_memory.py:76–185  ·  view source on GitHub ↗
(self, name=None, create=False, size=0, *, track=True)

Source from the content-addressed store, hash-verified

74 _track = True
75
76 def __init__(self, name=None, create=False, size=0, *, track=True):
77 if not size >= 0:
78 raise ValueError("'size' must be a positive integer")
79 if create:
80 self._flags = _O_CREX | os.O_RDWR
81 if size == 0:
82 raise ValueError("'size' must be a positive number different from zero")
83 if name is None and not self._flags & os.O_EXCL:
84 raise ValueError("'name' can only be None if create=True")
85
86 self._track = track
87 if _USE_POSIX:
88
89 # POSIX Shared Memory
90
91 if name is None:
92 while True:
93 name = _make_filename()
94 try:
95 self._fd = _posixshmem.shm_open(
96 name,
97 self._flags,
98 mode=self._mode
99 )
100 except FileExistsError:
101 continue
102 self._name = name
103 break
104 else:
105 name = "/" + name if self._prepend_leading_slash else name
106 self._fd = _posixshmem.shm_open(
107 name,
108 self._flags,
109 mode=self._mode
110 )
111 self._name = name
112 try:
113 if create and size:
114 os.ftruncate(self._fd, size)
115 stats = os.fstat(self._fd)
116 size = stats.st_size
117 self._mmap = mmap.mmap(self._fd, size)
118 except OSError:
119 self.unlink()
120 raise
121 if self._track:
122 resource_tracker.register(self._name, "shared_memory")
123
124 else:
125
126 # Windows Named Shared Memory
127
128 if create:
129 while True:
130 temp_name = _make_filename() if name is None else name
131 # Create and reserve shared memory block with this name
132 # until it can be attached to by mmap.
133 h_map = _winapi.CreateFileMapping(

Callers

nothing calls this directly

Calls 3

unlinkMethod · 0.95
_make_filenameFunction · 0.85
registerMethod · 0.45

Tested by

no test coverage detected