dataeval 1.1.3__tar.gz → 1.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dataeval-1.1.3 → dataeval-1.1.4}/PKG-INFO +1 -1
- {dataeval-1.1.3 → dataeval-1.1.4}/pyproject.toml +0 -4
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_version.py +2 -2
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/extractors/_bovw.py +4 -2
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/utils/_internal.py +8 -2
- {dataeval-1.1.3 → dataeval-1.1.4}/.gitignore +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/LICENSE +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/README.md +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_embeddings.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_experimental.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_helpers.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_log.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_aggregate.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_columns.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_deprecated.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_encoding.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_entry_legacy.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_filters.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_input.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_keyed.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_links.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_loading.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_metadata.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_serialize.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_store.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_accumulator.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_base.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_block.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_classification.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_data.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_dataset.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_detection.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_factors.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_frames.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_gather.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_instances.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_layout.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_ordering.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_propagation.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_reporting.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_reserved.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_select.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_source_index.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_metadata/_structurers/_tracking.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/_ontology.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/bias/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/bias/_balance.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/bias/_diversity.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/bias/_parity.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/config.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_ber.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_bin.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_calculators/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_calculators/_base.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_calculators/_cache.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_calculators/_dimensionstats.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_calculators/_hashstats.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_calculators/_pixelstats.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_calculators/_register.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_calculators/_registry.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_calculators/_visualstats.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_clusterer.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_completeness.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_compute_ratios.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_compute_stats.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_coverage.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_divergence.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_diversity.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_fast_hdbscan/_cluster_trees.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_fast_hdbscan/_disjoint_set.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_fast_hdbscan/_mst.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_feature_distance.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_hash.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_label_alignment.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_label_coverage.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_label_errors.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_label_parity.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_label_reconciliation.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_label_stats.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_metadata_insights.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_mst.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_mutual_info.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_nullmodel.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_ontology_validation.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_parity.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_rank.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_track_stats.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/core/_uap.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_classbalance.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_classfilter.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_crop.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_crops.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_geometry.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_indices.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_invalidates.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_limit.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_merge.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_relabel.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_resize.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_reverse.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_selectchannels.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_shuffle.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_split.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_torchvision.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_tracks.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_unzip.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/data/_view.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/exceptions.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/extractors/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/extractors/_flatten.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/extractors/_geometry.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/extractors/_onnx.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/extractors/_scores.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/extractors/_torch.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/extractors/_uncertainty.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/flags.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/models/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/models/_backends.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/models/_input.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/models/_metadata.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/models/_predictors.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/performance/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/performance/_aggregator.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/performance/_output.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/performance/_sufficiency.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/performance/schedules.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/protocols.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/py.typed +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/quality/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/quality/_duplicates.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/quality/_outliers.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/quality/_shared.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/scope/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/scope/_coverage.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/scope/_prioritize.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/scope/_representation.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/selection/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_drift/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_drift/_base.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_drift/_chunk.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_drift/_domain_classifier.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_drift/_kneighbors.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_drift/_mmd.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_drift/_reconstruction.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_drift/_univariate.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_drift/_wasserstein.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_ood/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_ood/_base.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_ood/_domain_classifier.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_ood/_kneighbors.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_ood/_reconstruction.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_shared/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_shared/_domain_classifier.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_shared/_kneighbors.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/_shared/_reconstruction.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/shift/update_strategies.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/types/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/types/_array.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/types/_config.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/types/_evaluator.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/types/_execution.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/types/_factors.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/types/_index.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/types/_ontology.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/types/_output.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/types/_schema.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/types/_track.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/utils/__init__.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/utils/_validate.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/utils/data.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/utils/losses.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/utils/models.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/utils/onnx.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/utils/preprocessing.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/utils/thresholds.py +0 -0
- {dataeval-1.1.3 → dataeval-1.1.4}/src/dataeval/utils/training.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: dataeval
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.4
|
|
4
4
|
Summary: DataEval provides a simple interface to characterize image data and its impact on model performance across classification and object-detection tasks
|
|
5
5
|
Project-URL: Homepage, https://dataeval.ai/
|
|
6
6
|
Project-URL: Repository, https://github.com/aria-ml/dataeval/
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.1.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 1,
|
|
21
|
+
__version__ = version = '1.1.4'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 1, 4)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -208,7 +208,9 @@ class BoVWExtractor:
|
|
|
208
208
|
If no SIFT features are found in any image. This typically occurs
|
|
209
209
|
when all images are uniform (e.g., solid color).
|
|
210
210
|
"""
|
|
211
|
-
|
|
211
|
+
# Threads, not processes: OpenCV and k-means release the GIL, so threads scale SIFT
|
|
212
|
+
# without paying process startup and model pickling on every Embeddings batch.
|
|
213
|
+
with PoolWrapper(get_max_processes(), context="threads") as pool:
|
|
212
214
|
all_descriptors = [
|
|
213
215
|
des for _, des in sorted(pool.imap_unordered(_extract_single, enumerate(data))) if len(des) > 0
|
|
214
216
|
]
|
|
@@ -269,7 +271,7 @@ class BoVWExtractor:
|
|
|
269
271
|
|
|
270
272
|
result = np.zeros((len(images), n_clusters), dtype=np.float32)
|
|
271
273
|
|
|
272
|
-
with PoolWrapper(get_max_processes(), context="
|
|
274
|
+
with PoolWrapper(get_max_processes(), context="threads") as pool:
|
|
273
275
|
for idx, histogram in pool.imap_unordered(
|
|
274
276
|
partial(_transform_single, kmeans=self._kmeans, n_clusters=n_clusters),
|
|
275
277
|
enumerate(images),
|
|
@@ -8,6 +8,7 @@ import sys
|
|
|
8
8
|
from collections.abc import Callable, Iterable, Iterator, Mapping, Sequence
|
|
9
9
|
from enum import Enum
|
|
10
10
|
from importlib import import_module
|
|
11
|
+
from multiprocessing.pool import ThreadPool
|
|
11
12
|
from os import cpu_count
|
|
12
13
|
from types import ModuleType
|
|
13
14
|
from typing import Any, Literal, TypeVar, cast, overload
|
|
@@ -948,9 +949,14 @@ class PoolWrapper:
|
|
|
948
949
|
Also supports 'threads' for workloads where the GIL is released during computation.
|
|
949
950
|
"""
|
|
950
951
|
|
|
951
|
-
def __init__(self, processes: int | None, context: Literal["fork", "spawn"] = DEFAULT_CONTEXT) -> None:
|
|
952
|
+
def __init__(self, processes: int | None, context: Literal["fork", "spawn", "threads"] = DEFAULT_CONTEXT) -> None:
|
|
952
953
|
procs = 1 if processes is None else max(1, (cpu_count() or 1) + processes + 1) if processes < 0 else processes
|
|
953
|
-
|
|
954
|
+
if procs <= 1:
|
|
955
|
+
self._pool = None
|
|
956
|
+
elif context == "threads":
|
|
957
|
+
self._pool = ThreadPool(procs)
|
|
958
|
+
else:
|
|
959
|
+
self._pool = multiprocessing.get_context(context).Pool(procs)
|
|
954
960
|
|
|
955
961
|
def imap_unordered(self, func: Callable[[T], R], iterable: Iterable[T]) -> Iterator[R]:
|
|
956
962
|
"""Apply `func` to each item in `iterable`, optionally using a pool."""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|