Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 小阵与大阵交叉_Python_Numpy - Fatal编程技术网

Python 小阵与大阵交叉

Python 小阵与大阵交叉,python,numpy,Python,Numpy,我有一个服务器列表,例如 servrs = ['A','B','C'] 然后是一个坐标列表(route_csv),长度约为100000 obs 比如说 ['query_id', 'from_lat', 'from_lon', 'to_lat', 'to_lon'] [1, 51.2, -0.5, 51.3, -0.6] 我想做的(为了多线程的目的)是将坐标列表拆分为与服务器数量相同的块,然后将每个块与服务器关联。秩序并不重要 我的方式很可怕,因为我在一个numpy数组中循环,如下所示: de

我有一个服务器列表,例如

servrs = ['A','B','C']
然后是一个坐标列表(route_csv),长度约为100000 obs

比如说

['query_id', 'from_lat', 'from_lon', 'to_lat', 'to_lon']
[1, 51.2, -0.5, 51.3, -0.6]
我想做的(为了多线程的目的)是将坐标列表拆分为与服务器数量相同的块,然后将每个块与服务器关联。秩序并不重要

我的方式很可怕,因为我在一个numpy数组中循环,如下所示:

def CreateUrls(route_csv, servrs):
    out_urls = []
    i = 0
    while True:
        for x in servrs:
            out_urls.append(["%s/viaroute?loc=%.5f,%.5f&loc=%.5f,%.5f&alt=false&geometry=false" %
                            (x,
                             route_csv[i, ]['from_lat'],
                             route_csv[i, ]['from_lon'],
                             route_csv[i, ]['to_lat'],
                             route_csv[i, ]['to_lon']),
                             route_csv[i, ]['query_id']])
            i += 1
            if i == len(route_csv):
                return out_urls
编辑:提供更多的上下文,然后像这样输入脚本

def RegOsrm(url_input):
    url_to_geocode, query_id = url_input
    try_c = 0
    while try_c < 3:
        try:
            response = requests.get(url_to_geocode)
            json_geocode = response.json()
            status = int(json_geocode['status'])
            # Found route between points
            if status == 200:
                tot_time_s = json_geocode['route_summary']['total_time']
                tot_dist_m = json_geocode['route_summary']['total_distance']
                used_from = json_geocode['via_points'][0]
                used_to = json_geocode['via_points'][1]
                out = [query_id,
                       status,
                       tot_time_s,
                       tot_dist_m,
                       used_from[0],
                       used_from[1],
                       used_to[0],
                       used_to[1]]
                print(out)
                return out
            # Cannot find route between points (code errors as 999)
            elif status == 207:
              return [query_id, 999, 0, 0, 0, 0, 0, 0]
        except Exception:
            time.sleep(2)
            try_c += 1
    print("Failed: %d %s" % (query_id, url_to_geocode))
    return [query_id, 999, 0, 0, 0, 0, 0, 0]

url_routes = CreateUrls(route_csv=routes, servrs=servrs)
del routes, servrs
print("Created %d urls" % len(url_routes))

# Calculate routes using all threads
pool = Pool()
calc_routes = pool.map(RegOsrm, url_routes)
pool.close()
pool.join()
def RegOsrm(url\u输入):
url\u到\u地理编码,查询\u id=url\u输入
试试c=0
当try_c<3时:
尝试:
response=requests.get(url到地理编码)
json_geocode=response.json()
status=int(json_地理代码['status'])
#找到点之间的路线
如果状态==200:
tot_time_s=json_地理编码['route_summary']['total_time']
tot_dist_m=json_地理编码['route_summary']['total_distance']
used_from=json_地理编码['via_points'][0]
used_to=json_地理编码['via_points'][1]
out=[query\u id,
地位
总时间,
总区,
已从[0]中使用\u,
从[1]中使用,
用于[0],
用于[1]]
打印(输出)
返回
#找不到点之间的路线(代码错误为999)
elif状态==207:
返回[查询id,999,0,0,0,0,0,0]
除例外情况外:
时间。睡眠(2)
试试看c+=1
打印(“失败:%d%s%”(查询\u id、url到\u地理编码))
返回[查询id,999,0,0,0,0,0,0]
url\u routes=CreateURL(route\u csv=routes,servrs=servrs)
德尔路
打印(“已创建%d个url”%len(url\u路由))
#使用所有线程计算路由
池=池()
calc_routes=pool.map(RegOsrm、url_routes)
pool.close()
pool.join()

您能提供一个示例吗
route\u csv
?感谢您提供了这个示例。您能否说明如何将其分配给
路由\u csv
-您的意思是将其作为嵌套列表吗?此外,您的代码是否有效?我不理解这个访问
route\u csv[I,]['from\u lat']
。对不起,lisa,这是一个numpy数组,它的列名定义如下
return np.genfromtxt(csv\u loc,delimiter=',',,names=True,usecols=(“query\u id”,“from\u lat”,“from\u lon”,“to\u lat”,“to_lon”),dtype=[”那么您的代码目前是否正常工作?