Process pool¶
Lightweight multiprocessing pool used for nnU-Net serving.
This module defines a simple process pool abstraction that runs a user- defined function in multiple worker processes. It is primarily used to offload expensive or blocking work, such as writing segmentation results, without tying up the main application process.
ProcessPool
¶
A process pool for parallelizing function calls.
Source code in src/nnunet_serve/process_pool.py
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | |
__del__()
¶
Ensures the process pool is closed when the instance is deleted.
__init__(num_processes)
¶
Initialize the process pool.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
num_processes
|
int
|
Number of processes to use. |
required |
Source code in src/nnunet_serve/process_pool.py
close()
¶
Close the process pool.
Source code in src/nnunet_serve/process_pool.py
fn(*args, **kwargs)
¶
Placeholder for the function to be executed in the pool.
This method must be overridden by subclasses to implement specific processing logic.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*args
|
Positional arguments for the function. |
()
|
|
**kwargs
|
Keyword arguments for the function. |
{}
|
Raises:
| Type | Description |
|---|---|
NotImplementedError
|
If not overridden by a subclass. |
Source code in src/nnunet_serve/process_pool.py
get()
¶
put(identifier, args, kwargs)
¶
Put a case to be processed.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
identifier
|
int
|
Identifier of the case. |
required |
args
|
tuple
|
Positional arguments for the function. |
required |
kwargs
|
dict
|
Keyword arguments for the function. |
required |
Source code in src/nnunet_serve/process_pool.py
run_case(input_queue, output_queue)
¶
Worker loop that processes cases from the input queue.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
input_queue
|
Queue
|
Queue containing case dictionaries with 'identifier', 'args', and 'kwargs'. |
required |
output_queue
|
Queue
|
Queue for storing the results of processed cases. |
required |
Source code in src/nnunet_serve/process_pool.py
WritingProcessPool
¶
Bases: ProcessPool
A process pool for parallelizing file writing operations.
Source code in src/nnunet_serve/process_pool.py
__del__()
¶
Ensures the process pool is closed when the instance is deleted.
__init__(num_processes)
¶
Initialize the process pool.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
num_processes
|
int
|
Number of processes to use. |
required |
Source code in src/nnunet_serve/process_pool.py
close()
¶
Close the process pool.
Source code in src/nnunet_serve/process_pool.py
fn(identifier, *args, **kwargs)
¶
Executes export_predictions for a given case.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
identifier
|
int
|
Identifier of the case. |
required |
*args
|
Positional arguments for export_predictions. |
()
|
|
**kwargs
|
Keyword arguments for export_predictions. |
{}
|
Returns:
| Name | Type | Description |
|---|---|---|
tuple |
(identifier, result_of_export_predictions) |
Source code in src/nnunet_serve/process_pool.py
get()
¶
put(identifier, args, kwargs)
¶
Put a case to be processed.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
identifier
|
int
|
Identifier of the case. |
required |
args
|
tuple
|
Positional arguments for the function. |
required |
kwargs
|
dict
|
Keyword arguments for the function. |
required |
Source code in src/nnunet_serve/process_pool.py
run_case(input_queue, output_queue)
¶
Worker loop that processes cases from the input queue.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
input_queue
|
Queue
|
Queue containing case dictionaries with 'identifier', 'args', and 'kwargs'. |
required |
output_queue
|
Queue
|
Queue for storing the results of processed cases. |
required |