Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #-------------------------------------------------------------------------------
- # name: Multiprocessing jobs
- #
- # Purpose: Methode om arcgis werktaken multiprocessed te verdelen
- #
- # Author: spoonm
- #
- # Created: 28/05/2015
- # Copyright: (c) martijn spoon 2015
- # Licence: <your licence>
- #-------------------------------------------------------------------------------
- #!/usr/bin/env python
- # import system module
- import os
- import sys
- #import math
- #import time
- import multiprocessing
- #max_process_count = multiprocessing.cpu_count()
- max_process_count = 4
- #import arcview
- #import arcinfo
- #import arcpy
- #from arcpy import env
- # Check out any necessary licenses
- #arcpy.CheckOutExtension("3D")
- # Check out the ArcGIS Spatial Analyst extension license
- #arcpy.CheckOutExtension("Spatial")
- debug = True
- #from arcpy.sa import *
- #-------------------------------------< Multiprocessing Pool functie>----------------------------------
- # hier worden de activiteiten verdeeld in de pool
- def ToPool(poollist):
- # pool engine
- maxtask = max(1,len(poollist)/max_process_count)
- pool = multiprocessing.Pool(min(max_process_count,len(poollist)), maxtasksperchild=1)
- #pool = multiprocessing.Pool(min(max_process_count,len(poollist)), maxtasksperchild=maxtask)
- filelist = pool.map(dobefore,poollist) # stuur per item alle gegevens naar dobefore en via return terug naar filelist de resultaat rasters van urban(path +naam) terug naar main
- pool.close()
- pool.join()
- # resultaat via filelist terugsturen naar def main()
- return filelist
- def dobefore(bladlist):
- # arcpy taken uit GIS
- try:
- file = bladlist[0]
- print file
- naam = os.path.basename(file)
- path = os.path.split(file)[0]
- # resultaat per proces terug sturen naar Topool(filelist), van daar wordt het naar main gestuurd via return filelist
- return naam,path
- except:
- # deze except is gemaakt om fouten -uit Con functie- op te vangen, processen gaan door na melding.
- print "block fout opgetreden, proces zou verder moeten gaan!"
- return None,None # bij fout geef none
- def main():
- bladlist = []
- # Set environment settings
- #nv.workspace = workspace# os.path.split(inputAOIF)[0] #inputAOIF #inputFishnet
- # voorbeeld input voor lijst
- path1 = "Y:\\ontwdata\\PBLbase\\Martijn\\PROJECTEN\\WLV\\Arno\\Testen\\rasters\\101.gdb\\RUR6_101"
- path2 = "Y:\\ontwdata\\PBLbase\\Martijn\\PROJECTEN\\WLV\\Arno\\Testen\\rasters\\102.gdb\\RUR6_102"
- path3 = "Y:\\ontwdata\\PBLbase\\Martijn\\PROJECTEN\\WLV\\Arno\\Testen\\rasters\\101.gdb\\RUR6_103"
- path4 = "Y:\\ontwdata\\PBLbase\\Martijn\\PROJECTEN\\WLV\\Arno\\Testen\\rasters\\102.gdb\\RUR6_104"
- # nieuwe lijst met alle rasters
- files = [path1,path2,path3,path4]
- for f in files:
- #print f
- file = f
- # list een folder op rasters
- bladlist.append([file])
- # stuur lijst met variabelen(bladlist) door naar Pool functie
- #>>>>>>>>>>>>>>>>>>>
- #lijst_all = ToPool(bladlist) # lijst_all = filelist
- filelist = ToPool(bladlist) # lijst_all = filelist
- #>>>>>>>>>>>>>>>>>>>
- nieuwelijst_name = []
- nieuwelijst_path= []
- # uitkomsten per proces uit de pool weer samenvoegen...
- for item in range(len(filelist)):
- # maak een lijst met enkel de namen
- nieuwelijst_name.append(filelist[item][0]) # 0 = rural
- # maak een lijst met paden tot database
- nieuwelijst_path.append(filelist[item][1]) # 0 = rural
- print nieuwelijst_name
- print nieuwelijst_path
- pass
- if __name__ == '__main__':
- # voor run van model is het handig om alle benodigde data in een database te hebben.
- # Geef worksspace waar naaer raster moet worden gezocht...
- #raster_folder = r"Y:\ontwdata\PBLbase\Martijn\PROJECTEN\WLV\Arno\Testen\rasters"
- #workspace = r"Y:\ontwdata\PBLbase\Martijn\PROJECTEN\WLV\Arno\Testen\workspace"
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement