পাইথনে মাল্টিথ্রেডিং কাজ করে কিনা সে সম্পর্কে আমি কিছুটা বিভ্রান্ত।
আমি জানি যে এটি সম্পর্কে অনেক প্রশ্ন ছিল এবং আমি তাদের মধ্যে অনেকগুলি পড়েছি, তবে আমি এখনও বিভ্রান্ত। আমি আমার নিজের অভিজ্ঞতা থেকে জানি এবং অন্যদের এখানে স্ট্যাকওভারফ্লোতে তাদের নিজস্ব উত্তর এবং উদাহরণগুলি পোস্ট করতে দেখলাম যে পাইথনটিতে সত্যিকার অর্থে মাল্টিথ্রেডিং সম্ভব। তাহলে কেন সবাই বলে যে পাইথনকে জিআইএল দ্বারা লক করা হয়েছে এবং একসাথে কেবল একটি থ্রেড চলতে পারে? এটি পরিষ্কারভাবে কাজ করে। বা এখানে কিছু পার্থক্য পাওয়া যাচ্ছে না?
অনেক পোস্টার / উত্তরদাতারা থ্রেডিং সীমাবদ্ধ থাকার কারণে এটি উল্লেখ করে রাখে যে এটি একাধিক কোর ব্যবহার করে না। তবে আমি বলব যে তারা এখনও কার্যকর কারণ তারা একযোগে কাজ করে এবং এইভাবে সম্মিলিত কাজের চাপটি দ্রুত সম্পন্ন করে। আমি বলতে চাইছি কেন অন্যথায় পাইথন থ্রেড মডিউলটি কেন থাকবে?
হালনাগাদ:
এখনও পর্যন্ত সমস্ত উত্তরের জন্য ধন্যবাদ। আমি এটি যেভাবে বুঝতে পেরেছি তা হল যে মাল্টিথ্রেডিং কেবলমাত্র কয়েকটি আইও কাজের জন্য সমান্তরালে চলবে, তবে সিপিইউ-ভিত্তিক একাধিক মূল কাজের জন্য কেবল একবারে এটি চালাতে পারে।
ব্যবহারিক দিক থেকে এটি আমার পক্ষে কী বোঝায় তা আমি পুরোপুরি নিশ্চিত নই, সুতরাং আমি যে ধরণের কাজটি মাল্টিথ্রিড করতে চাই তার একটি উদাহরণ দেব। উদাহরণস্বরূপ, ধরা যাক আমি স্ট্রিংগুলির একটি দীর্ঘ দীর্ঘ তালিকার মধ্য দিয়ে লুপ করতে চাই এবং প্রতিটি তালিকার আইটেমটিতে কিছু বেসিক স্ট্রিং ক্রিয়াকলাপ করতে চাই। যদি আমি তালিকাটি বিভক্ত করি, তবে প্রতিটি লুপ / স্ট্রিং কোডটি নতুন থ্রেডে প্রসেস করার জন্য প্রতিটি সাবলিস্টটি প্রেরণ করুন এবং ফলাফলগুলি একটি সারিতে ফিরিয়ে দিন, এই কাজের চাপগুলি কি একই সময়ে চলবে? সর্বাধিক গুরুত্বপূর্ণ এই তাত্ত্বিকভাবে স্ক্রিপ্টটি চালাতে যে সময় লাগে তা কি গতি বাড়িয়ে দেবে?
আর একটি উদাহরণ হতে পারে যদি আমি পিআইএল ব্যবহার করে চারটি বিভিন্ন ছবি চারটি বিভিন্ন থ্রেডে রেন্ডার করতে এবং সেভ করতে পারি, এবং একে একে একে একে একের পর এক ছবি প্রক্রিয়াকরণের চেয়ে দ্রুত হয়ে উঠতে পারি? আমার ধারণা, এই গতি-উপাদানটিই আমি সঠিক পরিভাষাটি নয় তার চেয়ে সত্যই ভাবছি।
আমি মাল্টিপ্রসেসিং মডিউল সম্পর্কেও জানি কিন্তু এখনই আমার মূল আগ্রহটি ছোট থেকে মাঝারি টাস্ক লোডের জন্য (10-30 সেকেন্ড) এবং তাই আমি মনে করি মাল্টিথ্রেডিং আরও উপযুক্ত হবে কারণ সাব-প্রসেসগুলি শুরু করতে ধীর হতে পারে।