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
无法更改。感谢。