Write geoprocessing output to memory

Writing geoprocessing outputs to memory is an alternative to writing output to a geodatabase or file-based format. It is often significantly faster than writing to on-disk formats. Data written to memory is temporary and is deleted when the application is closed. The memory workspace is an ideal location to write intermediate data in a ModelBuilder model or Python script.

Memory-based workspaces

ArcGIS provides two memory-based workspaces where geoprocessing outputs can be written.

Caution:
  • Memory-based workspaces do not support geodatabase elements such as feature datasets, representations, topologies, geometric networks, or network datasets.
  • Since memory-based workspaces are stored in your system's physical memory, or RAM, your system may run low on memory when writing large datasets into the workspace. This can negatively impact processing performance.
  • Folders cannot be created in memory-based workspaces.

memory workspace

The memory workspace is a memory-based workspace that supports output feature classes, tables, and raster datasets.

To write to the memory workspace, specify an output dataset path beginning with memory\ and with no file extension—for example, memory\tempOutput.

You can add memory datasets to a map in ArcGIS Pro.

in_memory workspace

Legacy:

The in_memory workspace is the legacy memory-based workspace built for ArcMap that supports output feature classes, tables, and raster datasets.

To write to the in_memory workspace, specify an output dataset path beginning with in_memory\ and with no file extension—for example, in_memory\tempOutput.

Note:

A geoprocessing tool cannot add an in_memory output to a map. After creating an in_memory output, a tool will copy the output to the project geodatabase. The tool then adds the output from the project geodatabase to the map. To display memory-based data in a map, use the memory workspace instead.

Copying to the project geodatabase does not occur when in_memory datasets are intermediate and are not added to a map.

Unlike the memory workspace, the in_memory workspace does not support subtypes or domains.

Manage the memory workspace

When using a memory-based workspace, any intermediate data should be deleted as soon as possible to free up system memory resources. The Delete tool can be used to delete data in a memory-based workspace. Delete individual datasets, or the entire workspace to clear the workspace contents.

Use the memory workspace in Python

Use of memory-based workspaces in Python is only valid for geoprocessing tools. Memory is not a general-purpose virtual directory where files or other data can be written.

Use the memory workspace as shown in the following code sample:

import arcpy

# Set the geoprocessing workspace
arcpy.env.workspace = r"C:\Data\Habitat.gdb"

# Buffer a Roads layer, writing output to memory 
arcpy.analysis.Buffer("Roads", r"memory\Buffers", 1000)

# Erase the buffers from a Vegetation layer
arcpy.analysis.Erase("Vegetation", r"memory\Buffers", r"memory\Erased")

# Dissolve the memory output of Erase to make a final output in the gdb workspace
arcpy.management.Dissolve(r"memory\Erased", "FinalOutput")