未验证 提交 cb897dd3 编写于 作者: L liuwei1031 提交者: GitHub

imporve doc of multiprocess_reader (#1407)

上级 770aa390
......@@ -5,18 +5,52 @@ multiprocess_reader
.. py:function:: paddle.fluid.io.multiprocess_reader(readers, use_pipe=True, queue_size=1000)
多进程reader使用python多进程从reader中读取数据,然后使用multi process.queue或multi process.pipe合并所有数据。进程号等于输入reader的编号,每个进程调用一个reader。
使用python多进程从 ``readers`` 中读取数据,然后使用 ``multiprocessing.Pipe`` 或 ``multiprocessing.Queue`` 合并所有数据。 ``readers`` 列表中的每个reader会被创建一个独立的进程来调用,reader之间应该相互独立,互不影响,避免出现多进程读取的冲突问题.
multiprocess.queue需要/dev/shm的rw访问权限,某些平台不支持。
您需要首先创建多个reader,这些reader应该相互独立,这样每个进程都可以独立工作。
参数:
- **readers** (list(generator)|tuple(generator)) - python生成器list, 用来读取数据
- **use_pipe** (bool,可选) - use_pipe控制multiprocess_reader内部用 ``pipe`` 还是 ``queue`` 来实现进程间通信,默认为 ``True`` 使用 ``pipe`` 进行通信
- **queue_size** (int,可选) - 如果使用queue来进行进程间通信 (``use_pipe=False``), 则该参数用来设定队列大小
返回:使用多进程封装readers之后的reader
返回类型:python生成器
**代码示例**
.. code-block:: python
reader0 = reader(["file01", "file02"])
reader1 = reader(["file11", "file12"])
reader1 = reader(["file21", "file22"])
reader = multiprocess_reader([reader0, reader1, reader2],
queue_size=100, use_pipe=False)
\ No newline at end of file
import paddle.fluid as fluid
from paddle.fluid.io import multiprocess_reader
import numpy as np
def fake_reader(start, end):
def __impl__():
for i in range(start, end):
yield [np.array([1, 2, 3]) * i],
return __impl__
with fluid.program_guard(fluid.Program(), fluid.Program()):
place = fluid.CPUPlace()
image = fluid.layers.data(
name='image', dtype='int64', shape=[3])
fluid.layers.Print(image)
reader = fluid.io.PyReader(
feed_list=[image], capacity=2)
image_p_1 = image + 1
decorated_reader = multiprocess_reader(
[fake_reader(1, 5), fake_reader(6, 10)], False)
reader.decorate_sample_generator(decorated_reader, batch_size=2, places=[place])
exe = fluid.Executor(place)
exe.run(fluid.default_startup_program())
for data in reader():
exe.run(feed=data, fetch_list=[image_p_1])
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册