আমি ওজিআর / জিডিএল ব্যবহার করে কিছু রাস্টার ডেটা প্রক্রিয়া করার চেষ্টা করছি এবং আমার মেশিনে সমস্ত কোরগুলির সম্পূর্ণ ব্যবহার পেতে পারে বলে মনে হচ্ছে না। আমি যখন কেবলমাত্র একটি একক কোরটিতে প্রক্রিয়াটি চালাই, তখন আমি সেই কোরটির 100% ব্যবহার করি। আমি যখন মাল্টিকোরগুলিতে বিভক্ত হওয়ার চেষ্টা করি (নীচের উদাহরণে, এক্স অফসেটগুলি ছাঁটাই করে এবং একটি সারিতে রেখে), আমি আমার 8 টি কোরের প্রতি করুণাময় ব্যবহার পাই। দেখে মনে হচ্ছে এটি প্রতিটি কোর জুড়ে কেবলমাত্র 100% ব্যবহার করে (উদাহরণস্বরূপ 12.5% প্রতিটিতে)।
আমি উদ্বিগ্ন ছিলাম যে একই ডেটাসোর্সটি ব্যবহার করা বাধা ছিল, তবে আমি তখন প্রতিটি কোরের জন্য অন্তর্নিহিত রাস্টার ফাইলটি নকল করে দিয়েছিলাম ... এবং মূল ব্যবহারটি এখনও বকাবকি। এটি আমাকে বিশ্বাস করতে পরিচালিত করে যে ওগার বা জিডাল একরকম একটি অটল শেয়ার্ড রিসোর্সের মতো আচরণ করছে তবে আমি সে সম্পর্কে অনলাইনে কিছুই খুঁজে পাচ্ছি না। কোন সাহায্যের অনেক প্রশংসা হবে!
এটি "সহায়ক" ফাংশন যা প্রতিটি কর্মী থ্রেডের অভ্যন্তরে চলে:
def find_pixels_intersect_helper(datasource, bounds_wkt, x_min, x_max):
bounds = ogr.CreateGeometryFromWkt(bounds_wkt)
rows_to_write = []
for x_offset in range(x_min, x_max):
for y_offset in range(datasource.RasterYSize):
pxl_bounds_wkt = pix_to_wkt(datasource, x_offset, y_offset)
pxl_bounds = ogr.CreateGeometryFromWkt(pxl_bounds_wkt)
if pxl_bounds.Intersect(bounds):
rows_to_write.append(['%s_%s' % (x_offset, y_offset), pxl_bounds.Centroid().ExportToWkt()])