Skip to content

Commit d865307

Browse files
committed
bo
1 parent 25df16b commit d865307

File tree

2 files changed

+10
-70
lines changed

2 files changed

+10
-70
lines changed

stream/parallelstream.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,10 @@ class ParallelStream(Stream):
6363

6464
PROCESS = 8
6565

66-
def __init__(self, iterable):
67-
66+
def __init__(self, iterable_supplier):
67+
self.__iterable_supplier = iterable_supplier
6868
self.__streams = [StreamThread(Stream(it))
69-
for it in ParallelUtils.sameSplit(iterable, self.PROCESS)]
69+
for it in ParallelUtils.sameSplit(self.__iterable_supplier(), self.PROCESS)]
7070

7171
for _stream in self.__streams:
7272
_stream.start()

stream/stream.py

Lines changed: 7 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def iterate(seed, operator):
7575
:param UnaryOperator operator: a function to be applied to the previous element to produce a new element
7676
:return: a new sequential Stream
7777
'''
78-
return Stream(IteratorUtils.iterate(seed, operator))
78+
return Stream(lambda: IteratorUtils.iterate(seed, operator))
7979

8080
@staticmethod
8181
def generate(supplier):
@@ -85,7 +85,7 @@ def generate(supplier):
8585
:param Supplier supplier: the Supplier of generated elements
8686
:return: a new infinite sequential unordered Stream
8787
'''
88-
return Stream(IteratorUtils.generate(supplier))
88+
return Stream(lambda: IteratorUtils.generate(supplier))
8989

9090
@staticmethod
9191
def concat(*streams):
@@ -97,80 +97,20 @@ def concat(*streams):
9797
'''
9898
return Stream(IteratorUtils.concat(*streams))
9999

100-
"""
101-
Already Implemented Method
102-
"""
103-
104-
@staticmethod
105-
def randint(lower, upper):
106-
'''
107-
Returns an infinite stream of random integer in range [a, b], including both end points.
108-
109-
:param int lower: min value for random numbers
110-
:param int upper: max value for random numbers
111-
:return: the infinite random stream
112-
'''
113-
return Stream.generate(lambda: random.randint(lower, upper))
114-
115-
@staticmethod
116-
def integers():
117-
'''
118-
Returns an infinite stream of integer from 0 to infinity
119-
120-
:return: the infinite stream
121-
'''
122-
return Stream.iterate(0, lambda i: i + 1)
123-
124-
@staticmethod
125-
def odds():
126-
'''
127-
Returns an infinite stream of odds number from 0 to infinity
128-
129-
:return: the infinite stream
130-
'''
131-
return Stream.iterate(1, lambda i: i + 2)
132-
133-
@staticmethod
134-
def evens():
135-
'''
136-
Returns an infinite stream of evens number from 0 to infinity
137-
138-
:return: the infinite stream
139-
'''
140-
return Stream.iterate(0, lambda i: i + 2)
141-
142-
@staticmethod
143-
def primes():
144-
'''
145-
Returns an infinite stream of primes number from 2 to infinity
146-
147-
:return: the infinite stream
148-
'''
149-
def prime_generator():
150-
yield 2
151-
primes = [2]
152-
actual = 1
153-
while True:
154-
actual += 2
155-
for prime in primes:
156-
if actual % prime == 0:
157-
break
158-
else:
159-
primes.append(actual)
160-
yield actual
161-
162-
return Stream(prime_generator())
163-
164100
"""
165101
Normal Methods
166102
"""
167103

168104
def __init__(self, iterable):
105+
def itS(it):
106+
for elem in it:
107+
yield elem
169108
self.__iterable = iterable
109+
self.__iterable_supplier = lambda: itS(self.__iterable)
170110

171111
def parallel(self):
172112
from .parallelstream import ParallelStream
173-
return ParallelStream(self.__iterable)
113+
return ParallelStream(self.__iterable_supplier)
174114

175115
def filter(self, predicate):
176116
'''

0 commit comments

Comments
 (0)