Don't require runtime (for now), type annot fixing
parent
971ac50756
commit
ecea1e1658
|
@ -29,7 +29,7 @@ from typing import Optional
|
|||
from multiprocessing.shared_memory import (
|
||||
SharedMemory,
|
||||
ShareableList,
|
||||
_USE_POSIX,
|
||||
_USE_POSIX, # type: ignore
|
||||
)
|
||||
|
||||
if _USE_POSIX:
|
||||
|
@ -46,15 +46,6 @@ from .log import get_logger
|
|||
log = get_logger(__name__)
|
||||
|
||||
|
||||
# how much is probably dependent on lifestyle
|
||||
_secs_in_day = int(60 * 60 * 24)
|
||||
# we try for a buncha times, but only on a run-every-other-day kinda week.
|
||||
_days_worth = 16
|
||||
_default_size = _days_worth * _secs_in_day
|
||||
# where to start the new data append index
|
||||
_rt_buffer_start = int((_days_worth - 1) * _secs_in_day)
|
||||
|
||||
|
||||
def disable_mantracker():
|
||||
'''
|
||||
Disable all ``multiprocessing``` "resource tracking" machinery since
|
||||
|
@ -79,7 +70,6 @@ def disable_mantracker():
|
|||
mantracker._resource_tracker = ManTracker()
|
||||
mantracker.register = mantracker._resource_tracker.register
|
||||
mantracker.ensure_running = mantracker._resource_tracker.ensure_running
|
||||
# ensure_running = mantracker._resource_tracker.ensure_running
|
||||
mantracker.unregister = mantracker._resource_tracker.unregister
|
||||
mantracker.getfd = mantracker._resource_tracker.getfd
|
||||
|
||||
|
@ -134,9 +124,14 @@ class _NpToken(Struct, frozen=True):
|
|||
dtype_descr: tuple
|
||||
size: int # in struct-array index / row terms
|
||||
|
||||
# TODO: use nptyping here on dtypes
|
||||
@property
|
||||
def dtype(self) -> np.dtype:
|
||||
return np.dtype(list(map(tuple, self.dtype_descr))).descr
|
||||
def dtype(self) -> list[tuple[str, str, tuple[int, ...]]]:
|
||||
return np.dtype(
|
||||
list(
|
||||
map(tuple, self.dtype_descr)
|
||||
)
|
||||
).descr
|
||||
|
||||
def as_msg(self):
|
||||
return self.to_dict()
|
||||
|
@ -161,10 +156,10 @@ class _NpToken(Struct, frozen=True):
|
|||
# _known_tokens = trio.RunVar('shms', {})
|
||||
|
||||
# process-local store of keys to tokens
|
||||
_known_tokens = {}
|
||||
_known_tokens: dict[str, _NpToken] = {}
|
||||
|
||||
|
||||
def get_shm_token(key: str) -> _NpToken | str:
|
||||
def get_shm_token(key: str) -> _NpToken | None:
|
||||
'''
|
||||
Convenience func to check if a token
|
||||
for the provided key is known by this process.
|
||||
|
@ -228,11 +223,10 @@ class ShmArray:
|
|||
self._post_init: bool = False
|
||||
|
||||
# pushing data does not write the index (aka primary key)
|
||||
self._write_fields: list[str] | None = None
|
||||
dtype = shmarr.dtype
|
||||
if dtype.fields:
|
||||
self._write_fields = list(shmarr.dtype.fields.keys())[1:]
|
||||
else:
|
||||
self._write_fields = None
|
||||
|
||||
# TODO: ringbuf api?
|
||||
|
||||
|
@ -283,9 +277,9 @@ class ShmArray:
|
|||
self,
|
||||
fields: Optional[list[str]] = None,
|
||||
|
||||
# type that all field values will be cast to
|
||||
# in the returned view.
|
||||
common_dtype: np.dtype = np.float,
|
||||
# type that all field values will be cast to in the returned
|
||||
# view.
|
||||
common_dtype: np.dtype = np.float64, # type: ignore
|
||||
|
||||
) -> np.ndarray:
|
||||
|
||||
|
@ -543,7 +537,6 @@ def open_shm_ndarray(
|
|||
|
||||
# "unlink" created shm on process teardown by
|
||||
# pushing teardown calls onto actor context stack
|
||||
|
||||
stack = tractor.current_actor().lifetime_stack
|
||||
stack.callback(shmarr.close)
|
||||
stack.callback(shmarr.destroy)
|
||||
|
@ -769,14 +762,19 @@ def open_shm_list(
|
|||
)
|
||||
|
||||
# "close" attached shm on actor teardown
|
||||
tractor.current_actor().lifetime_stack.callback(shml.shm.close)
|
||||
tractor.current_actor().lifetime_stack.callback(shml.shm.unlink)
|
||||
try:
|
||||
actor = tractor.current_actor()
|
||||
actor.lifetime_stack.callback(shml.shm.close)
|
||||
actor.lifetime_stack.callback(shml.shm.unlink)
|
||||
except RuntimeError:
|
||||
log.warning('tractor runtime not active, skipping teardown steps')
|
||||
|
||||
return shml
|
||||
|
||||
|
||||
def attach_shm_list(
|
||||
key: str,
|
||||
|
||||
) -> ShmList:
|
||||
|
||||
return ShmList(name=key)
|
||||
|
|
Loading…
Reference in New Issue