# uproot.MultithreadedXRootDSource

Defined in [uproot.source.xrootd](https://github.com/scikit-hep/uproot5/blob/db953cf9827349b3d24eb6742404158c1dfd5481/src/uproot/source/xrootd.py) on [line 455](https://github.com/scikit-hep/uproot5/blob/db953cf9827349b3d24eb6742404158c1dfd5481/src/uproot/source/xrootd.py#L455).

| **Inheritance order:**                                                                                                                                                     |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1. [uproot.source.chunk.MultithreadedSource](uproot.source.chunk.MultithreadedSource.html.md)<br/>2. [uproot.source.chunk.Source](uproot.source.chunk.Source.html.md) |

### *class* uproot.source.xrootd.MultithreadedXRootDSource(file_path: str, \*\*options)

* **Parameters:**
  * **file_path** (*str*) – A URL of the file to open.
  * **options** – Must include `"num_workers"`, `"use_threads"`, and `"timeout"`.

A [uproot.source.chunk.MultithreadedSource](uproot.source.chunk.MultithreadedSource.html.md) that manages many
[uproot.source.xrootd.XRootDResource](uproot.source.xrootd.XRootDResource.html.md) objects.

<a id="uproot-source-xrootd-multithreadedxrootdsource-timeout"></a>

## timeout

#### MultithreadedXRootDSource.timeout

The timeout in seconds or None.

<a id="uproot-source-xrootd-multithreadedxrootdsource-executor"></a>

## executor

Inherited from [uproot.source.chunk.MultithreadedSource](uproot.source.chunk.MultithreadedSource.html.md).

#### MultithreadedXRootDSource.executor

The [uproot.source.futures.ResourceThreadPoolExecutor](uproot.source.futures.ResourceThreadPoolExecutor.html.md)

<a id="uproot-source-xrootd-multithreadedxrootdsource-num-workers"></a>

## num_workers

Inherited from [uproot.source.chunk.MultithreadedSource](uproot.source.chunk.MultithreadedSource.html.md).

#### MultithreadedXRootDSource.num_workers

The number of [uproot.source.futures.ResourceWorker](uproot.source.futures.ResourceWorker.html.md) threads in
the [uproot.source.futures.ResourceThreadPoolExecutor](uproot.source.futures.ResourceThreadPoolExecutor.html.md).

<a id="uproot-source-xrootd-multithreadedxrootdsource-chunk"></a>

## chunk

Inherited from [uproot.source.chunk.Source](uproot.source.chunk.Source.html.md).

#### MultithreadedXRootDSource.chunk(start: int, stop: int) → [Chunk](uproot.source.chunk.Chunk.html.md#uproot.source.chunk.Chunk)

* **Parameters:**
  * **start** (*int*) – Seek position of the first byte to include.
  * **stop** (*int*) – Seek position of the first byte to exclude
    (one greater than the last byte to include).

Request a byte range of data from the file as a
[uproot.source.chunk.Chunk](uproot.source.chunk.Chunk.html.md).

<a id="uproot-source-xrootd-multithreadedxrootdsource-chunks"></a>

## chunks

Inherited from [uproot.source.chunk.Source](uproot.source.chunk.Source.html.md).

#### MultithreadedXRootDSource.chunks(ranges: list[tuple[int, int]], notifications: Queue) → list[[Chunk](uproot.source.chunk.Chunk.html.md#uproot.source.chunk.Chunk)]

* **Parameters:**
  * **ranges** (*list* *of*  *(**int* *,* *int* *)* *2-tuples*) – Intervals to fetch
    as (start, stop) pairs in a single request, if possible.
  * **notifications** (`queue.Queue`) – Indicator of completed
    chunks. After each gets filled, it is `put` on the
    queue; a listener should `get` from this queue
    `len(ranges)` times.

Request a set of byte ranges from the file.

This method has two outputs:

* The method returns a list of unfilled
  [uproot.source.chunk.Chunk](uproot.source.chunk.Chunk.html.md) objects, which get filled
  in a background thread. If you try to read data from an
  unfilled chunk, it will wait until it is filled.
* The method also puts the same [uproot.source.chunk.Chunk](uproot.source.chunk.Chunk.html.md)
  objects onto the `notifications` queue as soon as they are
  filled.

Reading data from chunks on the queue can be more efficient than
reading them from the returned list. The total reading time is the
same, but work on the filled chunks can be better parallelized if
it is triggered by already-filled chunks, rather than waiting for
chunks to be filled.

<a id="uproot-source-xrootd-multithreadedxrootdsource-file-path"></a>

## file_path

Inherited from [uproot.source.chunk.Source](uproot.source.chunk.Source.html.md).

#### MultithreadedXRootDSource.file_path

A path to the file (or URL).

<a id="uproot-source-xrootd-multithreadedxrootdsource-num-bytes"></a>

## num_bytes

Inherited from [uproot.source.chunk.Source](uproot.source.chunk.Source.html.md).

#### MultithreadedXRootDSource.num_bytes

<a id="uproot-source-xrootd-multithreadedxrootdsource-num-requests"></a>

## num_requests

Inherited from [uproot.source.chunk.Source](uproot.source.chunk.Source.html.md).

#### MultithreadedXRootDSource.num_requests

The number of requests that have been made (performance counter).

<a id="uproot-source-xrootd-multithreadedxrootdsource-num-requested-chunks"></a>

## num_requested_chunks

Inherited from [uproot.source.chunk.Source](uproot.source.chunk.Source.html.md).

#### MultithreadedXRootDSource.num_requested_chunks

The number of [uproot.source.chunk.Chunk](uproot.source.chunk.Chunk.html.md) objects that have been
requested (performance counter).

<a id="uproot-source-xrootd-multithreadedxrootdsource-num-requested-bytes"></a>

## num_requested_bytes

Inherited from [uproot.source.chunk.Source](uproot.source.chunk.Source.html.md).

#### MultithreadedXRootDSource.num_requested_bytes

The number of bytes that have been requested (performance counter).

<a id="uproot-source-xrootd-multithreadedxrootdsource-performance-counters"></a>

## performance_counters

Inherited from [uproot.source.chunk.Source](uproot.source.chunk.Source.html.md).

#### MultithreadedXRootDSource.performance_counters

<a id="uproot-source-xrootd-multithreadedxrootdsource-close"></a>

## close

Inherited from [uproot.source.chunk.Source](uproot.source.chunk.Source.html.md).

#### MultithreadedXRootDSource.close()

Manually closes the file(s) and stops any running threads.

<a id="uproot-source-xrootd-multithreadedxrootdsource-closed"></a>

## closed

Inherited from [uproot.source.chunk.Source](uproot.source.chunk.Source.html.md).

#### MultithreadedXRootDSource.closed

True once the [uproot.source.futures.ResourceThreadPoolExecutor](uproot.source.futures.ResourceThreadPoolExecutor.html.md)
has started shutting down; the file handles are closed by the time
that shutdown returns.
