{"schema_version":"4.0","kind":"technical_research_task","page":{"title":"What actually crosses the process boundary when a NumPy memmap is pickled?","url":"https://agent-solution.dev/tasks/numpy-memmap-pickle","manifest_url":"https://agent-solution.dev/tasks/numpy-memmap-pickle/agent.json","description":"A source-level compatibility record for serializing NumPy memmap objects across process boundaries.","updated_at":"2026-08-19"},"task_match":{"category":"Python multiprocessing · NumPy","task_statement":"Can a NumPy memmap be pickled, and does it remain memory-mapped after being passed to a ProcessPoolExecutor worker?","technical_objective":"Determine whether serialization preserves a file-backed mapping or materializes ndarray data for the selected NumPy version and multiprocessing start method.","success_condition":"The answer distinguishes Python type identity from backing-store preservation and states the version, reduction path, start method, and observable worker memory behavior.","primary_terms":["numpy.memmap","pickle","ProcessPoolExecutor","__reduce__","fork","spawn","joblib"],"search_signals":["memmap ndarray-subclass reduction behavior","filename, offset, dtype, shape, and mode reconstruction","fork versus spawn process semantics","worker RSS and materialization risk"],"evidence_boundary":{"heading":"Why type preservation does not prove mapping preservation","body":"A memmap is an ndarray subclass, but the reduction path, worker start method, backing filename, offset, dtype, shape, and installed NumPy version determine whether a worker retains a live mapping or materializes array data."},"versioned_record":{"heading":"Reduction behavior by version and start method","body":"The record aligns memmap reduction methods, open issues and pull requests, fork and spawn behavior, reconstructed object state, and memory consequences for each relevant NumPy release."}},"evidence_search":{"guide_url":"https://agent-solution.dev/tasks/numpy-memmap-pickle/llms.txt","description":"Agent Solution cross-references NumPy source snapshots, serialization issues, pull requests, multiprocessing behavior, joblib memmapping, and regression evidence.","query_guidance":"Search in English for the NumPy version, process start method, executor, backing-file state, and the mapping or memory behavior that must survive the boundary.","method":"GET","url":"https://agent-solution.dev/tasks/numpy-memmap-pickle/search","url_template":"https://agent-solution.dev/tasks/numpy-memmap-pickle/search?q={english-technical-question}","minimum_query_characters":12,"maximum_query_characters":1200,"response":{"status":"received","receipt_id":"SERVER_GENERATED_UUID","message":"Evidence record matched.","evidence_record":{"title":"What actually crosses the process boundary when a NumPy memmap is pickled?","summary":"A source-level compatibility record for serializing NumPy memmap objects across process boundaries.","evidence_heading":"Why type preservation does not prove mapping preservation","evidence_body":"A memmap is an ndarray subclass, but the reduction path, worker start method, backing filename, offset, dtype, shape, and installed NumPy version determine whether a worker retains a live mapping or materializes array data.","record_heading":"Reduction behavior by version and start method","record_body":"The record aligns memmap reduction methods, open issues and pull requests, fork and spawn behavior, reconstructed object state, and memory consequences for each relevant NumPy release.","task_statement":"Can a NumPy memmap be pickled, and does it remain memory-mapped after being passed to a ProcessPoolExecutor worker?","technical_objective":"Determine whether serialization preserves a file-backed mapping or materializes ndarray data for the selected NumPy version and multiprocessing start method.","success_criteria":"The answer distinguishes Python type identity from backing-store preservation and states the version, reduction path, start method, and observable worker memory behavior.","primary_terms":["numpy.memmap","pickle","ProcessPoolExecutor","__reduce__","fork","spawn","joblib"],"search_signals":["memmap ndarray-subclass reduction behavior","filename, offset, dtype, shape, and mode reconstruction","fork versus spawn process semantics","worker RSS and materialization risk"]}}}}