Python多处理运行直到函数返回False

时间:2016-06-06 14:31:21

标签: python multiprocessing

points = Set of points i.e.: set((x1,y1),(x2,y2), etc)
polygon = List of points i.e.: [(x1,y1),(x2,y2), etc]
pointInsidePolygon((point, polygon)) returns True if the point is inside the polygon

这是我的单线程代码:

for point in points:
    if pointInsidePolygon((point, polygon)):
        return False
return True

基本上我有一个巨大的点列表,我想检查多边形内是否有任何点。如果多边形内有一个点,我不需要继续检查是否有其他点。

我试图用多个线程来做这件事。理想情况下,如果一个线程获得True pointInsidePolygon,其他线程应该停止,但即使它们没有,它仍然可能更快。

这就是我所拥有的:

pointsInside = multiprocessing.Pool().map(pointInsidePolygon, [(point, polygon) for point in points)
if not numpy.all(pointsInside):
    return False
return True

我收到以下错误:OSError: [Errno 24] Too many open files

我无法在操作系统上进行任何更改,因为这需要在没有修改的情况下在类似的计算机上运行。如何更改此不会遇到错误?我只是想加快速度。 pointInsidePolygon无法更改。感谢。

0 个答案:

没有答案