你是说,比如
def calc(image):
# cv2 and np here
return data
st1 = time.time()
thrs = [threading.Thread(target=calc, args=(x,) for x in images]
[w.start() for w in thrs]
st2 = time.time()
这样子,会放GIL么?这和我们线上观察到现象不一致啊,线上观察,还是单核、近似串
行跑的;观察最终st2-st1效果,还不如不开线程暴力for串行的快。。。
【 在 lvsoft 的大作中提到: 】
: cv2和numpy底层会release gil,不需要特别的去研究怎么多核。你直接开thread就行。
: 至于前面那个过滤聚合的。如果是用python的itertools里面的groupby,filter等等实现的,那qps上去妥妥的热点代码啊。在高负载场景下,python就不能用来做任何数据处理,只能用来做代码粘合。
: 你这个场景是非常典型的可以用cython/numba进行热点优化的例子。
: ...................
--
FROM 114.251.196.*