আমি পাইথন অ্যাড-ইন সরঞ্জাম থেকে একটি মাল্টিপ্রসেসিং টাস্ক চালাতে চাই। আমার সমস্যাটি হচ্ছে প্রক্রিয়াটি ব্যর্থ হয়। মূলত আর্কম্যাপ ক্রাশ হয়।
আমার মূল কোডটি এখানে:
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'
যদি আমি আর্কম্যাপের বাইরে বা কোনও সরঞ্জামবক্স থেকে কোড চালনা করি তবে এটি কোনও সমস্যা ছাড়াই কাজ করে তবে আমি যখন যুক্তিটি একটি বোতামের ভিতরে রাখি তখন এটি অর্কম্যাপ ক্র্যাশ হয়ে যায়।
আমার অনুমান যে আর্কম্যাপ সমস্ত অজগর অ্যাড-ইনগুলির জন্য প্রক্রিয়াধীন রয়েছে। এই ইস্যুটির জন্য কি কোনও কাজ আছে?
আমি কোডটিতেও ফ্রিজ_সপোর্ট () যুক্ত করার চেষ্টা করেছি, তবে এটি তেমন কিছু করতে পারেনি।