windows下的多线程出错
收藏
快速回复
AI Studio平台使用 问答Notebook项目 1216 4
windows下的多线程出错
收藏
快速回复
AI Studio平台使用 问答Notebook项目 1216 4

出错信息如下:

AttributeError: Can't pickle local object 'multiprocess_reader.._read_into_queue'

 

代码如下:

import time
import paddle
import numpy as np
import paddle.fluid as fluid
import paddle.dataset.mnist as mnist
from paddle.fluid.io import multiprocess_reader


image = fluid.data(name='image', shape=[None,784], dtype='float32')
label = fluid.data(name='label', shape=[None,1], dtype='int64')
reader_list=[paddle.reader.shuffle(mnist.train(),buf_size=500) for id in range(2)]
multi_reader=paddle.reader.multiprocess_reader(reader_list, False)
data_reader = fluid.io.PyReader(feed_list=[image,label], capacity=2)
data_reader.decorate_sample_generator(multi_reader,batch_size=25,places=fluid.CPUPlace())


exe = fluid.Executor(fluid.CPUPlace())
exe.run(fluid.default_startup_program())
total_count=0
t1=time.time()
for data in data_reader:
result,=exe.run(feed=data,fetch_list=[image])
total_count+=result.shape[0]
print("total_count:",total_count)
print("time:",time.time()-t1)

 


reader_list=[paddle.batch(it,batch_size=32) for it in reader_list]
total_count=0
t1=time.time()
for pass_id in range(len(reader_list)):
for id,data in enumerate(reader_list[pass_id]()):
total_count+=len(data)
print("total_count:", total_count)
print("time:", time.time() - t1)

 

 

请帮助解答一下 谢谢

 

0
收藏
回复
全部评论(4)
时间顺序
AIStudio810261
#2 回复于2020-05

这个意思是说, 您在windows下运行这个代码, 且使用了多线程? 

0
回复
ChunkitLau
#3 回复于2020-05

可以尝试在代码放在

if __name__ == '__main__':

里面

pytorch使用多线程会因为没有保护而重复调用线程锁死的情况,不知道paddle会不会有相似的情况

0
回复
水水水的老师
#4 回复于2020-05

没有缩进看着真困难

0
回复
没入门的研究生
#5 回复于2020-05

多线程在__main__下运行,不然会莫名其妙报错。

0
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户