পাইথন.মলিটো প্রসেসিং এবং "ফ্যাটাল এরিওর (ইনফাদি) মিসিং ডিরেক্টর"


9

আরকি দিয়ে মাল্টিপ্রসেসিং করার চেষ্টা করার সময় আমি মাঝে মাঝে এই ত্রুটিটি নিয়ে চলে যাচ্ছি:

FATAL ERROR (INFADI)
MISSING DIRECTORY

এই ত্রুটিটি কী ঘটছে তা সম্পর্কে আমার কোনও ধারণা নেই এবং এটি অজগর প্রক্রিয়াটি ক্র্যাশ করে, এতে কোনও ট্রেসব্যাক পাওয়া অসম্ভব হয়ে পড়ে। একটি দীর্ঘ সাউন্ড মডেল থেকে চূড়ান্ত রাস্টার আউটপুট লেখার সময় এটি ঘটে।

এটি কখনও কখনও ত্রুটি সহ হয়

Unable to write BND file for %TEMP%\ras####

যেখানে% টেম্পকে সংশোধন করা হয়েছে সংশোধনী এবং #### কিছু এলোমেলো 4 সংখ্যার নম্বর। এটি অস্বাভাবিক কারণ প্রতিটি প্রক্রিয়ার নিজস্ব কর্মক্ষেত্র রয়েছে, যেখানে বেশিরভাগ ফাইল লিখতে হবে।

সমস্যা ইনপুট ডেটা নয় ... আমি ব্যর্থ ইনপুটগুলিতে প্রোগ্রামটি আবার চালাতে পারি এবং এটি সঠিকভাবে চলবে।


আমি শীঘ্রই এটির সাথে ফিরে আসব, তবে এই মুহুর্তে ভিন্ন মডেলটিতে কাজ করতে হবে।
blord-castillo

উত্তর:


6

এখানে কিছু জিনিস যাচাই করার জন্য রয়েছে:

আপনি কি কার্সার ব্যবহার করছেন? আপনি তাদের ছেড়ে দিচ্ছেন? আপনি কি বিভিন্ন প্রক্রিয়াতে কোনও বস্তু পুনরায় ব্যবহার করার চেষ্টা করছেন? আপনি কি একই অস্থায়ী অবস্থান ভাগ করে নিচ্ছেন? আপনি কি মেমরি প্রসেসিংয়ে করছেন?

সাধারণভাবে, আরকিটি কম কম্বজ অবজেক্টগুলির চারপাশে কেবল একটি মোড়ক এবং কোনও ধরণের মাল্টিপ্রসেসিং জটিল হবে।


4

আমি যখন এই সমস্যাটি দেখা পেয়েছিলাম তখন যখন দুটি পৃথক প্রক্রিয়ার জন্য আরসিপি.এনভি.ওয়ার্কস্পেস এবং আরসিপি.এনভি.স্ক্র্যাচ ওয়ার্কস্পেস এক হয়। আর্ক প্রায় সমস্ত মধ্যবর্তী রাস্টারগুলিকে ESRI GRID ফর্ম্যাটে ওয়ার্কস্পেসে (বা স্ক্র্যাচ ওয়ার্কস্পেস) লিখেছেন। বিন্যাসের সিউডো-ডাটাবেস কাঠামোর কারণে একই সময়ে আপনি দুটি ইএসআরআই গ্রিড রেস্টার লিখতে পারবেন না (তথ্য ফোল্ডারে প্রতিটি রাস্টারের জন্য অনন্য কী রয়েছে)।

অস্থায়ী টেম্পাইল.এমকেডিটেম্প ফোল্ডারটি ব্যবহার করে প্রতিটি প্রক্রিয়াটির জন্য অনন্য ওয়ার্কস্পেস এবং স্ক্র্যাচ ওয়ার্কস্পেস বরাদ্দ করে আমি এই ত্রুটিটি এড়িয়ে চলেছি।


আমি ইতিমধ্যে অনন্য ওয়ার্কস্পেস ব্যবহার করেছি তবে আমি ডাবল চেক করব যে স্ক্র্যাচ ওয়ার্কস্পেসটিও অনন্য। আমি অনুমান করছি যেহেতু এটি% টিইএমপি% নির্দেশিকায় লেখা হচ্ছে।
ব্লর্ড-কাস্টিলো

জোনা ঠিক আছে। আমি একযোগে 5 টি থ্রেড জুড়ে হাজারো রাস্টারকে প্রক্রিয়াজাত করছি; প্রত্যেকের জন্য একটি অনন্য স্ক্র্যাচ ওয়ার্কস্পেস সেট করা একমাত্র সমাধান যা আমার পক্ষে কাজ করেছে। অনন্য ফোল্ডারগুলিতে আউটপুটিং, যেমন কেউ কেউ সুপারিশ করেছে, কেবল পরবর্তী সময়ের জন্য আরও কাজ তৈরি করে ... অবশেষে আমি সেগুলি একই ডিরেক্টরিতে চাই।
টম

পেছনের দিকে কী বেদনা! মাল্টিপ্রসেসিংয়ের সাথে অনন্য স্ক্র্যাচ ওয়ার্কস্পেস ব্যবহার করে কাজ করা হয়েছে, তবে আমার godশ্বর, অতিরিক্ত ফোল্ডারগুলি পরিচালনা করে এবং তারপর আরকি লকগুলি দিয়ে সেগুলি মুছতে চেষ্টা করা হাস্যকর!
ডি_সি

3

আমি এটিরও মুখোমুখি হয়েছি এবং এখনও একটি শব্দ ঠিক করেছি। কাজগুলি সম্পূর্ণ হয়েছে কিনা তা পরীক্ষা করার জন্য মাল্টিপ্রসেসিং কার্যটি যথেষ্ট শক্তিশালী কিনা তা নিশ্চিত করার জন্য আমার কাজটি 1) is 2) প্রতি 10-15 মিনিটে লঞ্চ করতে দুটি স্ক্রিপ্ট নির্ধারণ করুন। একটি স্ক্রিপ্টে অজানা প্রক্রিয়াগুলি নির্বাচন করার জন্য একটি কমান্ড রয়েছে এবং দ্বিতীয়টি কাঙ্ক্ষিত মাল্টিপ্রসেসিং স্ক্রিপ্টটি পুনরায় চালু করে। মূলত, এটি মাল্টিপ্রসেসিং পুলকে সতেজ করে। কিল স্ক্রিপ্ট এরকম কিছু:

def read_pid():
    inFile = open("E:/temp/pid.csv")
    for line in inFile:
        pid = str(line)
    inFile.close()
    return pid

def kill():
    if os.path.exists("E:/temp/pid.csv")==True:
        pid = read_pid()
        PROCESS_TERMINATE=1
        handle = ctypes.windll.kernel32.OpenProcess(PROCESS_TERMINATE,False,pid)
        ctypes.windll.kernel32.TerminateProcess(handle,-1)
        ctypes.windll.kernel32.CloseHandle(handle)
    else:
        return

কাঙ্ক্ষিত স্ক্রিপ্টের প্রতিটি প্রবর্তন আমার কাছে এটির পিএসআইডি কোনও সিএসভিতে লিখতে হবে।


3

আমি অবশ্যই স্বীকার করব যে আমি এই মুহুর্তে রয়েছি, কেবল একটি মাল্টিথ্রেডিং ওয়ানাবি, তবে https://pythongisandstuff.wordpress.com/2013/07/31/ using-arcpy-with-m মাল্টিপ্রসেসিং-১০E2%80%93- অংশে একটি ব্লগ -3 / পরামর্শ দেয় যে arcpy.Exists()ফাংশনটি সংহত করে তোলা এটির মূল চাবিকাঠি।


2

আমি দেখতে পেলাম যে এক ফোল্ডারে একাধিক থ্রেড / কোর সংরক্ষণ এবং রেস্টারগুলি সংশোধন করার চেষ্টা করার সময় আমি INFADI ত্রুটি পেয়েছি। আউটপুটগুলির জন্য প্রতিটি কার্যে একটি সাবফোল্ডার নির্ধারণ করা সমস্যার সমাধান বলে মনে হচ্ছে। আমি বিশ্বাস করি যে রাস্টারটির সাথে সম্পর্কিত পেরিফেরিয়াল ফাইলগুলিতে একাধিক পঠন / লেখার সাথে সমস্যাটি ছিল (যেমন "তথ্য" ফোল্ডার)। আমি এখন নিম্নলিখিত সতর্কতাও নিয়োগ করি:

import arcpy,multiprocessing,random

def run(foo,c):
    tempFolder = os.path.join("Z:/temp/",'temp_%s'%(str(c)))
    if not os.path.exists(tempFolder): os.mkdir(tempFolder)
    arcpy.env.scratchWorkspace = tempFolder
    arcpy.env.Workspace = tempFolder

    # create unique object in memory, run task, then delete unique object in memory
    tempMem = str(rnd)
    try:arcpy.Delete_management(tempMem)
    except:pass

    <tasks> #output to appropriate subfolder

    arcpy.Delete_management(tempMem)

if __name__ == '__main__':
    cores = 3
    pool = multiprocessing.Pool(cores)
    count = 0
    for foo in bar:
        pool.apply_async(run,(foo,c))
        count +=1
    pool.close()
    pool.join()

আমি একাধিক থ্রেডের মাধ্যমে একই ফোল্ডারে একাধিক জিআরআইডি লেখা থেকে ত্রুটি পেয়েছি বলে মনে হয় না। একমাত্র সমস্যাটি মনে হচ্ছে যে এটি করা প্রক্রিয়াকরণটি ধীর করে দেয় এবং থ্রেডিংটি কার্যত অবৈধ করে দেয়, কারণ এটি একবারে কেবল একটি রাস্টার লিখে।
টম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.