我们从Python开源项目中,提取了以下42个代码示例,用于说明如何使用ctypes.memset()。
def RawValue(typecode_or_type, *args): ''' Returns a ctypes object allocated from shared memory ''' type_ = typecode_to_type.get(typecode_or_type, typecode_or_type) obj = _new_value(type_) ctypes.memset(ctypes.addressof(obj), 0, ctypes.sizeof(obj)) obj.__init__(*args) return obj
def RawArray(typecode_or_type, size_or_initializer): ''' Returns a ctypes array allocated from shared memory ''' type_ = typecode_to_type.get(typecode_or_type, typecode_or_type) if isinstance(size_or_initializer, (int, long)): type_ = type_ * size_or_initializer obj = _new_value(type_) ctypes.memset(ctypes.addressof(obj), 0, ctypes.sizeof(obj)) return obj else: type_ = type_ * len(size_or_initializer) result = _new_value(type_) result.__init__(*size_or_initializer) return result
def _set_argv(process_name): """ Overwrites our argv in a similar fashion to how it's done in C with: strcpy(argv[0], 'new_name'); """ if Py_GetArgcArgv is None: return global _PROCESS_NAME # both gets the current process name and initializes _MAX_NAME_LENGTH current_name = get_process_name() argv, argc = ctypes.c_int(0), argc_t() Py_GetArgcArgv(argv, ctypes.pointer(argc)) if len(process_name) > _MAX_NAME_LENGTH: raise IOError("Can't rename process to something longer than our initial name (this would overwrite memory used for the env)") # space we need to clear zero_size = max(len(current_name), len(process_name)) ctypes.memset(argc.contents, 0, zero_size + 1) # null terminate the string's end process_name_encoded = process_name.encode('utf8') ctypes.memmove(argc.contents, process_name_encoded, len(process_name)) _PROCESS_NAME = process_name
def ZeroMemory(ctypes_obj): ct.memset(ct.addressof(ctypes_obj), 0, ct.sizeof(ctypes_obj))
def test_object_argmax_with_NULLs(self): # See gh-6032 a = np.empty(4, dtype='O') ctypes.memset(a.ctypes.data, 0, a.nbytes) assert_equal(a.argmax(), 0) a[3] = 10 assert_equal(a.argmax(), 3) a[1] = 30 assert_equal(a.argmax(), 1)
def test_object_argmin_with_NULLs(self): # See gh-6032 a = np.empty(4, dtype='O') ctypes.memset(a.ctypes.data, 0, a.nbytes) assert_equal(a.argmin(), 0) a[3] = 30 assert_equal(a.argmin(), 3) a[1] = 10 assert_equal(a.argmin(), 1)
def RawArray(typecode_or_type, size_or_initializer): ''' Returns a ctypes array allocated from shared memory ''' type_ = typecode_to_type.get(typecode_or_type, typecode_or_type) if isinstance(size_or_initializer, int): type_ = type_ * size_or_initializer obj = _new_value(type_) ctypes.memset(ctypes.addressof(obj), 0, ctypes.sizeof(obj)) return obj else: type_ = type_ * len(size_or_initializer) result = _new_value(type_) result.__init__(*size_or_initializer) return result
def write(self, audio_data, length): # Pass audio_data=None to write silence if length == 0: return 0 with self._lock: write_ptr = self._ds_buffer.lock(self._write_cursor_ring, length) assert 0 < length <= self._buffer_size assert length == write_ptr.audio_length_1.value + write_ptr.audio_length_2.value if audio_data: ctypes.memmove(write_ptr.audio_ptr_1, audio_data.data, write_ptr.audio_length_1.value) audio_data.consume(write_ptr.audio_length_1.value, self.source_group.audio_format) if write_ptr.audio_length_2.value > 0: ctypes.memmove(write_ptr.audio_ptr_2, audio_data.data, write_ptr.audio_length_2.value) audio_data.consume(write_ptr.audio_length_2.value, self.source_group.audio_format) else: if self.source_group.audio_format.sample_size == 8: c = 0x80 else: c = 0 ctypes.memset(write_ptr.audio_ptr_1, c, write_ptr.audio_length_1.value) if write_ptr.audio_length_2.value > 0: ctypes.memset(write_ptr.audio_ptr_2, c, write_ptr.audio_length_2.value) self._ds_buffer.unlock(write_ptr) self._write_cursor += length self._write_cursor_ring += length self._write_cursor_ring %= self._buffer_size
def win_pick(window, starting_color): paste = None start_color = None if starting_color is not None: start_color = hexstr_to_bgr(starting_color[1:]) s = sublime.load_settings("ColorPicker.sublime-settings") custom_colors = s.get("custom_colors", ['0'] * 16) if len(custom_colors) < 16: custom_colors = ['0'] * 16 s.set('custom_colors', custom_colors) cc = CHOOSECOLOR() ctypes.memset(ctypes.byref(cc), 0, ctypes.sizeof(cc)) cc.lStructSize = ctypes.sizeof(cc) if sublime_version == 2: cc.hwndOwner = window.hwnd() else: # Temporary fix for Sublime Text 3 - For some reason the hwnd crashes it # Of course, clicking out of the colour picker and into Sublime will make # Sublime not respond, but as soon as you exit the colour picker it's ok cc.hwndOwner = None cc.Flags = CC_SOLIDCOLOR | CC_FULLOPEN | CC_RGBINIT cc.rgbResult = c_uint32(start_color) if not paste and start_color else get_pixel() cc.lpCustColors = to_custom_color_array(custom_colors) if ChooseColorW(ctypes.byref(cc)): color = bgr_to_hexstr(cc.rgbResult) else: color = None return color
def write(self, audio_data, length): # Pass audio_data=None to write silence if length == 0: return 0 with self._lock: p1 = ctypes.c_void_p() l1 = lib.DWORD() p2 = ctypes.c_void_p() l2 = lib.DWORD() assert 0 < length <= self._buffer_size self._buffer.Lock(self._write_cursor_ring, length, ctypes.byref(p1), l1, ctypes.byref(p2), l2, 0) assert length == l1.value + l2.value if audio_data: ctypes.memmove(p1, audio_data.data, l1.value) audio_data.consume(l1.value, self.source_group.audio_format) if l2.value: ctypes.memmove(p2, audio_data.data, l2.value) audio_data.consume(l2.value, self.source_group.audio_format) else: if self.source_group.audio_format.sample_size == 8: c = 0x80 else: c = 0 ctypes.memset(p1, c, l1.value) if l2.value: ctypes.memset(p2, c, l2.value) self._buffer.Unlock(p1, l1, p2, l2) self._write_cursor += length self._write_cursor_ring += length self._write_cursor_ring %= self._buffer_size
def segfault(): """Task causing a segfault, abruptly terminating the process executing the task.""" import ctypes ctypes.memset(0, 0, 1) assert False, 'should not get here'
def __call__(self, struct): ctype = get_ctype(self) obj = ctype() pool = PoolRecord(obj) ctypes.memset(ctypes.pointer(obj), 0, ctypes.sizeof(ctype)) self.fill(pool, obj, struct) return pool
def memset(self, allocation, value, size): """set the memory in allocation to the value in value :param allocation: A memory allocation unit :type allocation: pycuda.driver.DeviceAllocation :param value: The value to set the memory to :type value: a single 32-bit float or int :param size: The size of to the allocation unit in bytes :type size: int """ C.memset(allocation, value, size)
def write(self, audio_data, length): # Pass audio_data=None to write silence if length == 0: return 0 self.lock() p1 = ctypes.c_void_p() l1 = lib.DWORD() p2 = ctypes.c_void_p() l2 = lib.DWORD() assert 0 < length <= self._buffer_size self._buffer.Lock(self._write_cursor_ring, length, ctypes.byref(p1), l1, ctypes.byref(p2), l2, 0) assert length == l1.value + l2.value if audio_data: ctypes.memmove(p1, audio_data.data, l1.value) audio_data.consume(l1.value, self.source_group.audio_format) if l2.value: ctypes.memmove(p2, audio_data.data, l2.value) audio_data.consume(l2.value, self.source_group.audio_format) else: if self.source_group.audio_format.sample_size == 8: c = 0x80 else: c = 0 ctypes.memset(p1, c, l1.value) if l2.value: ctypes.memset(p2, c, l2.value) self._buffer.Unlock(p1, l1, p2, l2) self._write_cursor += length self._write_cursor_ring += length self._write_cursor_ring %= self._buffer_size self.unlock()
def clear(self): ctypes.memset(ctypes.addressof(self), 0, ctypes.sizeof(self))