我最初在python中编写了一个test3d数组上的嵌套for循环。因为我想将它应用到更大的数组中,这将花费更多的时间,所以我决定将ipyparallel作为函数编写并使用bview.map文件. 这样我就可以利用超级计算机上的多个核心/节点。你知道吗
然而,当代码被发送到超级计算机上时,实际上速度较慢。当我分析的时候,似乎大部分时间都花在
方法'acquire'of'螺纹锁紧'对象
来自其他堆栈交换线程的消息表明,这是由于共享数据导致了同步导致的速度减慢。你知道吗
我试着用地图代替地图同步,但是时间。睡眠在这种情况下占用的时间差不多。你知道吗
使用map或其他方法的正确方法是什么?你知道吗
出现问题的代码段:
SSIMarray = numpy.zeros((imx,imy,imz))
cenx, ceny, cenz= zip(*itertools.product(range(0,imx), range(0,imy), range(0,imz)))
amr= bview.map_sync(SSIMfunc, cenx, ceny, cenz)
SSIMarray = (numpy.asarray(amr))
以及分析器的结果
60823909 function calls (60593868 primitive calls) in 201.869 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
1089003 113.937 0.000 113.937 0.000 {method 'acquire' of 'thread.lock' objects}
64080 5.223 0.000 6.873 0.000 uuid.py:579(uuid4)
384352 4.933 0.000 5.145 0.000 {cPickle.dumps}
640560 4.526 0.000 6.064 0.000 threading.py:260(__init__)
64019 3.704 0.000 16.941 0.000 asyncresult.py:95(_init_futures)
640560 3.338 0.000 9.402 0.000 threading.py:242(Condition)
64077 3.222 0.000 31.562 0.000 client.py:935(_send)
320327 2.359 0.000 8.756 0.000 _base.py:287(__init__)
目前没有回答
相关问题 更多 >
编程相关推荐