Skip to content

Commit ebe24e6

Browse files
authored
polish unitest test_multiprocess_reader_exception (#33504)
1 parent aa50868 commit ebe24e6

File tree

3 files changed

+32
-43
lines changed

3 files changed

+32
-43
lines changed

python/paddle/fluid/reader.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1291,7 +1291,7 @@ def __thread_main__(legacy_expected_place):
12911291
except Exception as ex:
12921292
self._queue.kill()
12931293
self._thread = None
1294-
logging.warn('Your reader has raised an exception!')
1294+
logging.warning('Your reader has raised an exception!')
12951295
six.reraise(*sys.exc_info())
12961296

12971297
self._thread = threading.Thread(

python/paddle/fluid/tests/unittests/test_multiprocess_reader_exception.py

Lines changed: 30 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class ReaderException(Exception):
2525
pass
2626

2727

28-
class TestMultiprocessReaderException(unittest.TestCase):
28+
class TestMultiprocessReaderExceptionWithQueueSuccess(unittest.TestCase):
2929
def setUp(self):
3030
self.use_pipe = False
3131
self.raise_exception = False
@@ -36,7 +36,7 @@ def places(self):
3636
else:
3737
return [fluid.CPUPlace()]
3838

39-
def main_impl(self, place, iterable, use_legacy_py_reader):
39+
def main_impl(self, place, iterable):
4040
sample_num = 40
4141
batch_size = 4
4242

@@ -53,37 +53,25 @@ def __impl__():
5353
return __impl__
5454

5555
with fluid.program_guard(fluid.Program(), fluid.Program()):
56-
if not use_legacy_py_reader:
57-
image = fluid.data(
58-
name='image', dtype='float32', shape=[None, 10])
59-
60-
reader = fluid.io.PyReader(
61-
feed_list=[image], capacity=2, iterable=iterable)
62-
else:
63-
reader = fluid.layers.py_reader(
64-
capacity=2, shapes=[[-1, 10], ], dtypes=['float32', ])
65-
image = fluid.layers.read_file(reader)
56+
image = fluid.data(name='image', dtype='float32', shape=[None, 10])
57+
reader = fluid.io.DataLoader.from_generator(
58+
feed_list=[image], capacity=2, iterable=iterable)
6659

6760
image_p_1 = image + 1
6861

6962
decorated_reader = multiprocess_reader(
7063
[fake_reader(), fake_reader()], use_pipe=self.use_pipe)
7164

72-
if use_legacy_py_reader:
73-
reader.decorate_paddle_reader(
74-
fluid.io.batch(
75-
decorated_reader, batch_size=batch_size))
65+
if isinstance(place, fluid.CUDAPlace):
66+
reader.set_sample_generator(
67+
decorated_reader,
68+
batch_size=batch_size,
69+
places=fluid.cuda_places(0))
7670
else:
77-
if isinstance(place, fluid.CUDAPlace):
78-
reader.decorate_sample_generator(
79-
decorated_reader,
80-
batch_size=batch_size,
81-
places=fluid.cuda_places(0))
82-
else:
83-
reader.decorate_sample_generator(
84-
decorated_reader,
85-
batch_size=batch_size,
86-
places=fluid.cpu_places())
71+
reader.set_sample_generator(
72+
decorated_reader,
73+
batch_size=batch_size,
74+
places=fluid.cpu_places(1))
8775

8876
exe = fluid.Executor(place)
8977
exe.run(fluid.default_startup_program())
@@ -97,9 +85,9 @@ def __impl__():
9785
for data in reader():
9886
exe.run(feed=data, fetch_list=[image_p_1])
9987
num += 1
100-
self.assertEquals(num, batch_num)
88+
self.assertEqual(num, batch_num)
10189
except SystemError as ex:
102-
self.assertEquals(num, 0)
90+
self.assertEqual(num, 0)
10391
raise ReaderException()
10492
else:
10593
for _ in range(3):
@@ -112,40 +100,40 @@ def __impl__():
112100
except fluid.core.EOFException:
113101
reader.reset()
114102
self.assertFalse(self.raise_exception)
115-
self.assertEquals(num, batch_num)
103+
self.assertEqual(num, batch_num)
116104
except SystemError as ex:
117105
self.assertTrue(self.raise_exception)
118-
self.assertEquals(num, 0)
106+
self.assertEqual(num, 0)
119107
raise ReaderException()
120108

121109
def test_main(self):
122110
for p in self.places():
123111
for iterable in [False, True]:
124-
use_legacy_py_reader_range = [False
125-
] if iterable else [False, True]
126-
for use_legacy_py_reader in use_legacy_py_reader_range:
127-
try:
128-
with fluid.scope_guard(fluid.Scope()):
129-
self.main_impl(p, iterable, use_legacy_py_reader)
112+
try:
113+
with fluid.scope_guard(fluid.Scope()):
114+
self.main_impl(p, iterable)
130115

131-
self.assertTrue(not self.raise_exception)
132-
except ReaderException:
133-
self.assertTrue(self.raise_exception)
116+
self.assertTrue(not self.raise_exception)
117+
except ReaderException:
118+
self.assertTrue(self.raise_exception)
134119

135120

136-
class TestCase1(TestMultiprocessReaderException):
121+
class TestMultiprocessReaderExceptionWithQueueFailed(
122+
TestMultiprocessReaderExceptionWithQueueSuccess):
137123
def setUp(self):
138124
self.use_pipe = False
139125
self.raise_exception = True
140126

141127

142-
class TestCase2(TestMultiprocessReaderException):
128+
class TestMultiprocessReaderExceptionWithPipeSuccess(
129+
TestMultiprocessReaderExceptionWithQueueSuccess):
143130
def setUp(self):
144131
self.use_pipe = True
145132
self.raise_exception = False
146133

147134

148-
class TestCase3(TestMultiprocessReaderException):
135+
class TestMultiprocessReaderExceptionWithPipeFailed(
136+
TestMultiprocessReaderExceptionWithQueueSuccess):
149137
def setUp(self):
150138
self.use_pipe = True
151139
self.raise_exception = True

python/paddle/reader/decorator.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import six
1919
import sys
2020
import warnings
21+
import logging
2122

2223
from six.moves.queue import Queue
2324
from six.moves import zip_longest

0 commit comments

Comments
 (0)