正如标题所说,我有一个程序要通过multiprocessing
进行并行化。具体来说,我有dict
int
作为key
,string
(' sa)作为value
。
我要做的就是创建一个新的dict
,对旧dict
的网址进行了一些转换:
def convert_url(_id, url, sess):
im = get_image(url) #get_image is defined elsewhere
return _id, sess.run(end_points['vgg_16/fc7'], feed_dict={input_tensor: im})
您可以看到我从网址中检索图像,然后使用张量流CNN来转换图像。
但是,我无法管理此功能的并行化。这是我尝试过的(假设sess
,其他张量流程在其他地方初始化):
from multiprocessing import Pool
from functools import partial
with Pool(processes=3) as pool:
results = pool.starmap(partial(convert_url, sess=sess), some_dict.items()))
我最终获得的是TypeError
:
TypeError: can't pickle _thread.lock objects
(我知道results
不会像dict
那样写,但将它转换成一个是微不足道的。我不知道如何做到这一点。 )
任何帮助?