Мене цікавлять методи навчання, щоб використовувати повну міру багатоядерної потужності обробки, наявної на настільному комп’ютері. Arc стверджує, що геопроцесоризація фону дозволяє користувачеві використовувати декілька ядер, однак завдання, по суті, повинні зачекати в черзі, щоб виконати попереднє завдання.
Хто-небудь розробляв паралельні чи багатопотокові методи геообробки в Arc / Python? Чи існують технічні вузькі місця, які перешкоджають багатоядерній обробці окремих завдань?
Я знайшов цікавий приклад у Stackoverflow, який зацікавив мене, хоча це не приклад геообробки:
from multiprocessing import Pool
import numpy
numToFactor = 976
def isFactor(x):
result = None
div = (numToFactor / x)
if div*x == numToFactor:
result = (x,div)
return result
if __name__ == '__main__':
pool = Pool(processes=4)
possibleFactors = range(1,int(numpy.floor(numpy.sqrt(numToFactor)))+1)
print 'Checking ', possibleFactors
result = pool.map(isFactor, possibleFactors)
cleaned = [x for x in result if not x is None]
print 'Factors are', cleaned
this is not meant to discourage
.