আমি ভাবছিলাম যে এখানে সম্প্রদায়ের অন্য কেউ স্থানিক বিশ্লেষণের জন্য মাল্টি-প্রসেসিং ব্যবহার করার চেষ্টা করেছে কিনা। যথা: আমি একাধিক রাস্টারদের মাধ্যমে পুনরাবৃত্তি করার চেষ্টা করছি, প্রত্যেকের জন্য একাধিক প্রসেসিং জব তৈরি করতে এবং একটি ডিএফ ফাংশনের মধ্যে বেশ কয়েকটি জিওপ্রোসেসিং পদক্ষেপের মাধ্যমে তাদের চালানোর চেষ্টা করছি। এর লাইন বরাবর কিছু
def net(RasterImage, OutFolderDir):
arcpy.env.overwriteOutput = True
arcpy.env.workspace = OutFolderDir
DEM_Prj = DEM_Prj.tif
try:
arcpy.ProjectRaster_management(RasterImage, DEM_Prj....
FocalStatistics(DEM_prj....)
...
if __name__ == '__main__':
InputFolder = r'C:\test\somepath'
Output = r'C:\test\somepath2'
arcpy.env.workspace = InputFolder
arcpy.env.scratchWorkspace = r'C:\test.gdb'
fcs = arcpy.ListRasters('*')
pool = multiprocessing.Pool(4)
jobs = []
for fc in fcs:
rIn = os.path.join(InputFolder,fc)
rOut = os.path.join(Output,fc[:-4])
jobs.append(pool.apply_async(net,(rIn, rOut)))
এখন মাল্টিপ্রসেসিং সাধারণত প্রথম ব্যাচের জন্য চলে! যাইহোক, বেশ কয়েকটি ডেটাসেটের (4 টিরও বেশি ফাইল - অর্থাত্ 4 মূল মাল্টিপ্রসেসিং) চেষ্টা করার সময় আমি বিভিন্ন ভিন্ন ত্রুটির মধ্যে চলেছি:
ERROR 010302: Unable to create the output raster: C:\somepath\sr6f8~1\FocalSt_srtm1
ERROR 010067: Error in executing grid expression.
Failed to execute (FocalStatistics).
এবং
ERROR 999999: Error executing function.
Failed to copy raster dataset
Failed to execute (ProjectRaster)
প্রথম ত্রুটিতে লক্ষ্য করুন যে ফোকাসের পরিসংখ্যানগুলির সাথে সম্পর্কিত (আউটফোল্ডারডির অবস্থানে) তৈরি করা অদ্ভুত ফোল্ডারটি প্রায় শেষের আউটপুটটির সঠিক প্রতিরূপ তৈরি করে।
আমার প্রশ্নটি আপনার অভিজ্ঞতার ভিত্তিতে তৈরি হয়েছে একটি মাল্টিপ্রসেসিং ফাংশনের মধ্যে বেশ কয়েকটি পদক্ষেপের জিওপ্রোসেসিং তৈরি করা কি অসম্ভব? বা এই পদক্ষেপগুলি তাদের পৃথক জিওপ্রসেসিং পদক্ষেপগুলিতে টাইল করার দরকার আছে কি?
হালনাগাদ
তবুও অনুরূপ ত্রুটিগুলি হস্তান্তর - ডিফ ফাংশনে আমদানি ফাংশনগুলি সরিয়ে নেওয়া দেখিয়েছে
import arcpy
from arcpy.sa import *
একটি যুক্ত সিনট্যাক্স সতর্কতা দিয়ে আউটপুট তৈরি করতে পারে না যে আমদানির * অনুমোদিত নয়।
আপডেট # 2
আমি জানি এটি দেরি করে দেওয়া জবাব কিন্তু আমি ভেবেছিলাম ভবিষ্যতে আমার কাজের প্রতিবেদনের জন্য এটি অন্য কারও পক্ষে উপকৃত হতে পারে যা মাল্টিপ্রসেসিংকে আরকি দিয়ে কাজ করতে দেয়। এই সমস্যাটিতে ফিরে আসার পরে আমি যে প্রধান সমস্যাটি পেয়েছি তা হ'ল আরকি মডিউলগুলির প্রতিযোগিতা নয় বরং স্ক্র্যাচ ওয়ার্কস্পেসের প্রতিযোগিতা যা আর্কওবেক্টস অস্থায়ী ফাইলগুলি সংরক্ষণ করতে ব্যবহার করে। সুতরাং প্রতিটি প্রক্রিয়াটির জন্য একটি অনন্য স্ক্র্যাচ ওয়ার্কস্পেস তৈরির জন্য মাল্টিপ্রসেসিং পার্সিং আর্গুমেন্টে কাউন্টার চালানো বিবেচনা করুন
Counter = 0
for fc in fcs:
rIn = os.path.join(InputFolder,fc)
rOut = os.path.join(Output,fc[:-4])
jobs.append(pool.apply_async(net,(rIn, rOut,Counter)))
Counter += 1
তারপরে মূল ফাংশনে একটি নির্দিষ্ট অস্থায়ী ডিরেক্টরি তৈরি করুন এবং প্রতিটি মাল্টিপ্রসেসিং কার্যকে একটি অনন্য স্ক্র্যাচ ওয়ার্কস্পেস নির্ধারণ করুন।
def main(RasterImage,OutFolderDir,Counter)
TempFolder = os.path.join(os.path.dirname(OutFolderDir),'Temp_%s'% (Counter))
os.mkdir(TempFolder)
arcpy.scratchWorkspace = TempFolder
...
আশা করি যা রাগিকে পৃথক টেম্প ওয়ার্কস্পেসগুলি ব্যবহারের মূল পরামর্শের জন্য সহায়তা এবং ধন্যবাদ জানায় - এটি মূলত কেন কাজ করে না তা নিয়ে এখনও বিস্মিত।
অতিরিক্ত সম্পদ
R
। এগুলি সাধারণ উদ্দেশ্যমূলক কাজের জন্য ভাল পরামর্শ নয়, কারণ তারা তাদের মূল্যবান হওয়ার চেয়ে বেশি সমস্যায় পড়তে পারে তবে আপনি যখন একবারে কয়েক ঘন্টা বাঁচাতে পারেন, বারবার চেষ্টা করা যেতে পারে তবে তা ব্যর্থ হতে পারে।