Script Development / Thread Pool DFF.THREAD
Added in version 3.3.1
DataFlux Func includes a built-in thread pool feature DFF.THREAD
, which users can directly use with the system automatically managing the opening and closing of the thread pool.
For some IO-intensive processes (such as numerous HTTP requests), you can use the thread pool to improve processing efficiency.
DFF.THREAD.set_pool_size(...)
The thread pool size must be set before the first call to DFF.THREAD.submit(...)
Set the size of the thread pool (default thread pool size is 5
).
Parameter | Type | Required / Default Value | Description |
---|---|---|---|
pool_size |
int | 5 |
Size of the thread pool |
Example | |
---|---|
1 |
|
DFF.THREAD.submit(...)
Use the thread pool to invoke a function.
Parameter | Type | Required / Default Value | Description |
---|---|---|---|
fn |
function | Required | Function to execute in the thread |
*args |
- | () |
Positional arguments for the function |
*kwargs |
- | {} |
Named arguments for the function |
The return value is a string used as a key to mark the execution of this function, which can later be used with DFF.THREAD.get_result(...)
to obtain results of specific tasks.
Example | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
DFF.THREAD.pop_result(...)
Pop an already completed result from the execution functions of the thread pool.
Popped function results will not be returned in DFF.THREAD.get_result(...)
or DFF.THREAD.get_all_results(...)
again.
Parameter | Type | Required / Default Value | Description |
---|---|---|---|
wait |
bool | True |
Whether to wait for results (i.e., whether to block) |
The return value is a FuncThreadResult
object.
You can get the return value of the function execution through the .value
property of the FuncThreadResult
object, and the thrown error through the .error
property.
Example | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
DFF.THREAD.get_all_results(...)
Get all results from executed thread functions.
Parameter | Type | Required / Default Value | Description |
---|---|---|---|
wait |
bool | True |
Whether to wait for results (i.e., whether to block) |
The return value is a list of FuncThreadResult
objects.
You can get the return value of the function execution through the .value
property of the FuncThreadResult
object, and the thrown error through the .error
property.
Example | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
DFF.THREAD.get_result(...)
Get the result of a specific thread function execution.
The return value is a FuncThreadResult
object.
You can get the return value of the function execution through the .value
property of the FuncThreadResult
object, and the thrown error through the .error
property.
Parameter | Type | Required / Default Value | Description |
---|---|---|---|
key |
str | Required | Key for the function execution result to retrieve (returned by DFF.THREAD.submit(...) |
wait |
bool | True |
Whether to wait for results (i.e., whether to block) |
Example | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
DFF.THREAD.is_all_finished
The DFF.THREAD.is_all_finished
property is used to determine if all functions in the current thread pool have finished executing.
Example | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
DFF.THREAD.wait_all_finished(...)
Check if all functions in the current thread pool have finished executing.
Example | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
DFF.THREAD.pop_result(...) VS DFF.THREAD.get_all_results(...)
There are slight differences between the two methods for obtaining results from thread pool function executions:
DFF.THREAD.pop_result(...)
is better suited for independent tasks, where any task having a result immediately proceeds to subsequent processing.DFF.THREAD.get_all_results(...)
is suitable for tasks that have dependencies or associations, where all tasks need to be completed before proceeding together into subsequent processing.