多处理映射函数的计算计数器



使用多处理地图函数来加快我的地理编码脚本。它运行良好,但我需要为每个记录添加一个计数器

ids=[24381, 31883,  21145, 21143, 23010, 23016, 28066, 28163, 28673, 68665, 50750, 35268, 34943, 76377, 29760]
def linestring(d):
args={'segmentID': d}
resp=requests.get('http://geocoder?',params=args)
data= resp.json()[0]['GeomWebMercator']
feature = {'type':'Feature',
'properties':{},
'geometry':{'type':'LineString','coordinates': None}}
feature['geometry']['coordinates']=data['coordinates'][0]
feature['properties']['id']=d
return feature
if __name__ == '__main__':
pool = mp.Pool(processes = 8)
result = pool.map(linestring, ids)

对于每条记录,计数器将获得加一。有没有办法使用地图功能做到这一点?

像这样的东西

c=0
for x in li:
c+=1
print c

我知道我可以在map功能之后迭代此列表并添加一个加号,但我不想这样做

我想弄清楚我想做什么。我需要在函数中添加另一个参数,并通过该参数传递一个可迭代的项目作为第二个参数

ids=[24381, 31883,  21145, 21143, 23010, 23016, 28066, 28163, 28673, 68665, 50750, 35268, 34943, 76377, 29760]
def linestring(d,c):
args={'segmentID': d}
resp=requests.get('http://geocoder?',params=args)
data= resp.json()[0]['GeomWebMercator']
feature = {'type':'Feature',
'properties':{},
'geometry':{'type':'LineString','coordinates': None}}
feature['geometry']['coordinates']=data['coordinates'][0]
feature['properties']['id']=d
feature['properties']['counter']=c
return feature
if __name__ == '__main__':
pool = mp.Pool(processes = 8)
result = pool.map(linestring, ids,xrange(len(ids)))

我不知道您可以通过map函数传递多个参数

最新更新