- fix zeros length iterator bug
- fix bug where sometimes not all results are returned
This commit is contained in:
@@ -145,7 +145,7 @@ class Chunks(Iterable):
|
|||||||
number = int(cpu_count * ratio)
|
number = int(cpu_count * ratio)
|
||||||
self.iterators = [iter(arg) for arg in iterables]
|
self.iterators = [iter(arg) for arg in iterables]
|
||||||
self.number_of_items = length
|
self.number_of_items = length
|
||||||
self.length = max(1, min(length, number))
|
self.length = min(length, number)
|
||||||
self.lengths = [((i + 1) * self.number_of_items // self.length) - (i * self.number_of_items // self.length)
|
self.lengths = [((i + 1) * self.number_of_items // self.length) - (i * self.number_of_items // self.length)
|
||||||
for i in range(self.length)]
|
for i in range(self.length)]
|
||||||
|
|
||||||
@@ -674,10 +674,11 @@ def gmap(fun: Callable[[Iteration, Any, ...], Result], iterable: Iterable[Iterat
|
|||||||
else:
|
else:
|
||||||
if yield_index:
|
if yield_index:
|
||||||
for i, c in enumerate(iterable):
|
for i, c in enumerate(iterable):
|
||||||
yield i, chunk_fun(c, *args, **kwargs)[0]
|
for q in chunk_fun(c, *args, **kwargs):
|
||||||
|
yield i, q
|
||||||
else:
|
else:
|
||||||
for c in iterable:
|
for c in iterable:
|
||||||
yield chunk_fun(c, *args, **kwargs)[0]
|
yield from chunk_fun(c, *args, **kwargs)
|
||||||
|
|
||||||
else: # parallel case
|
else: # parallel case
|
||||||
with ExitStack() as stack:
|
with ExitStack() as stack:
|
||||||
@@ -710,18 +711,20 @@ def gmap(fun: Callable[[Iteration, Any, ...], Result], iterable: Iterable[Iterat
|
|||||||
if yield_ordered:
|
if yield_ordered:
|
||||||
if yield_index:
|
if yield_index:
|
||||||
for i in range(len(iterable)):
|
for i in range(len(iterable)):
|
||||||
yield i, p[i][0]
|
for q in p[i]:
|
||||||
|
yield i, q
|
||||||
else:
|
else:
|
||||||
for i in range(len(iterable)):
|
for i in range(len(iterable)):
|
||||||
yield p[i][0]
|
yield from p[i]
|
||||||
else:
|
else:
|
||||||
if yield_index:
|
if yield_index:
|
||||||
for _ in range(len(iterable)):
|
for _ in range(len(iterable)):
|
||||||
i, n = p.get_newest()
|
i, n = p.get_newest()
|
||||||
yield i, n[0]
|
for q in n:
|
||||||
|
yield i, q
|
||||||
else:
|
else:
|
||||||
for _ in range(len(iterable)):
|
for _ in range(len(iterable)):
|
||||||
yield p.get_newest()[1][0]
|
yield from p.get_newest()[1]
|
||||||
|
|
||||||
|
|
||||||
@wraps(gmap)
|
@wraps(gmap)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "parfor"
|
name = "parfor"
|
||||||
version = "2024.9.1"
|
version = "2024.9.2"
|
||||||
description = "A package to mimic the use of parfor as done in Matlab."
|
description = "A package to mimic the use of parfor as done in Matlab."
|
||||||
authors = ["Wim Pomp <wimpomp@gmail.com>"]
|
authors = ["Wim Pomp <wimpomp@gmail.com>"]
|
||||||
license = "GPLv3"
|
license = "GPLv3"
|
||||||
|
|||||||
Reference in New Issue
Block a user