Crates.io | processing_chain |
lib.rs | processing_chain |
version | 0.2.2 |
source | src |
created_at | 2022-09-04 07:29:46.019107 |
updated_at | 2022-11-27 13:23:52.282486 |
description | Rust library to set up processing chains of large amounts of data. |
homepage | |
repository | https://github.com/giorgiosavastano/process |
max_upload_size | |
id | 658157 |
size | 41,829 |
processing-chain
provides a convenient way to seamlessly set up processing
chains for large amounts of data.
Please read the API documentation on docs.rs
or take a look at the examples
.
processing-chain
is based on the concept of Item which is an abstraction that is used to spawn all the processes in parallel. All the user needs to do is define:
processing-chain
will take care of spawning the process across all Items via parallelization.
The user can also provide some extra processing configuration information (e.g., overwrite).
Items
Using a JSON file
[
{
"name": "item_1",
"input_item_paths": ["test_1.npy", "test_2.npy", "test_2.npy"],
"output_item_paths": ["output_1.nc"]
},
{
"name": "item_2",
"input_item_paths": ["test_1.npy", "test_2.npy"],
"output_item_paths": ["output_2.nc"]
},
{
"name": "item_3",
"input_item_paths": ["test_6.npy", "test_7.npy", "test_8.npy"],
"output_item_paths": ["output_3.nc"]
}
]
_process_item
functionIn rust:
fn _process_item(item: &Item) -> Result<bool> {
// define how to process a single item
println!(
"Processing {} {:?} -> {:?}",
item.name, item.input_item_path, item.output_item_path
);
// ...
Ok(true)
}
If your function is written in Python and you don't feel like converting it to Rust (yet), you could use the inline-python crate.
use inline_python::python;
fn _process_item(item: &Item) -> Result<bool> {
// define how to process a single item
python! {
print("Processing {} {} -> {}".format('item.name, item.input_item_path, item.output_item_path))
};
// ...
Ok(true)
}
Some examples can be found here
.