मैं अजगर ऐड-इन टूल से मल्टीप्रोसेसिंग टास्क चलाना चाहूंगा। मेरा मुद्दा यह है कि प्रक्रिया विफल रहती है। मूल रूप से ArcMap दुर्घटनाओं।
यहाँ मेरा मूल कोड है:
def function(startOID, endOID, fc):
wrksp = r"c:\temp\mp_addintest\data\test_%s.txt" % (int(startOID) + int(endOID))
# real logic removed to dumb it down
with open(wrksp, 'w') as writer:
writer.write("%s to %s from %s \n" % (startOID, endOID, fc))
return wrksp
class btnMP(object):
"""Implementation for src_addin.MPButton (Button)"""
def __init__(self):
self.enabled = True
self.checked = False
def onClick(self):
pool = None
try:
pythonExe = os.path.join(sys.exec_prefix, 'python.exe')
multiprocessing.set_executable(pythonExe)
pool = multiprocessing.Pool(4)
results = []
for i in xrange(4):
results.append(pool.apply_async(function, [str(1),
str(i),
str("test")]))
pool.close()
pool.join()
for result in results:
print result.get()
except:
del pool
print 'error'
यदि मैं आर्कपेक के बाहर या टूलबॉक्स से कोड चलाता हूं, तो यह बिना किसी समस्या के काम करता है, लेकिन जब मैंने तर्क को एक बटन के अंदर रखा, तो यह arcmap को क्रैश करने का कारण बनता है।
मेरा अनुमान है कि आर्केप सभी अजगर ऐड-इन्स के लिए प्रक्रिया में चल रहा है। क्या इस मुद्दे पर कोई काम हो रहा है?
मैंने कोड के साथ freeze_support () में भी जोड़ने की कोशिश की है, लेकिन उसने कुछ भी नहीं किया।