【发布时间】:2023-03-23 07:35:01
【问题描述】:
这大概是我所做的:
import mxnet as mx
import cv2
from multiprocessing import Pool
from itertools import repeat
num_worker=4
CNNNet=[]
img = cv2.imread('../datasets/1.jpg')
sym, arg_params, aux_params = mx.model.load_checkpoint('det1', 0)
for i in range(num_worker):
worker_net = mx.mod.Module(symbol=sym,label_names=None)
worker_net.bind(data_shapes=[('data', (1, 3, 1000, 1000))],for_training=False)
worker_net.set_params(arg_params,aux_params)
CNNNet.append(worker_net)
pool = Pool(num_worker)
threshold = 0.6
res = pool.map(do_work_warpper,zip(repeat(img),CNNNet[:num_worker],repeat(threshold)))
do_work_warpper() 函数是:
def do_work_warpper(args):
return do_work(*args)
def do_work(img,net,threshold):
#do image predict job here
return res
我对使用multiprocessing.Pool 和mx.mod.Module 对象时出现python3.6 中的错误的问题感到困惑:
TypeError: can't pickle module objects
或在python2.7中:
PicklingError: Can't pickle <type 'module'>: attribute lookup __builtin__.module failed
任何建议将不胜感激。
【问题讨论】: