এই সমস্যা সমাধানের জন্য একটি ভাল পদ্ধতির হ'ল প্রথমে একটি ফলাফল পাওয়ার জন্য প্রয়োজনীয় কোডটি লিখতে হবে, তারপরে অ্যাপ্লিকেশনটির সমান্তরাল করতে থ্রেডিং কোড অন্তর্ভুক্ত করতে হবে।
নিখুঁত বিশ্বে এটি কেবল একই সাথে 100,000 থ্রেডগুলি শুরু করে যা পরবর্তী ফলাফলগুলি প্রক্রিয়াকরণের জন্য তাদের ফলাফলকে একটি অভিধান বা তালিকায় আউটপুট দেয় তবে বাস্তবে আপনি কতটা সমান্তরাল এইচটিটিপি অনুরোধে এই ফ্যাশনে ইস্যু করতে পারবেন তা সীমাবদ্ধ। স্থানীয়ভাবে, আপনার এক সাথে কতগুলি সকেট খুলতে পারে তার সীমাবদ্ধতা রয়েছে, আপনার পাইথন ইন্টারপ্রেটার কতগুলি মৃত্যুদন্ড কার্যকর করতে পারবেন। দূরবর্তীভাবে, সমস্ত অনুরোধগুলি একটি সার্ভারের বিরুদ্ধে, বা অনেকের বিরুদ্ধে থাকলে আপনি একযোগে সংযোগের সংখ্যায় সীমাবদ্ধ থাকতে পারেন। এই সীমাবদ্ধতাগুলির সম্ভবত সম্ভবত আপনি স্ক্রিপ্টটি এমনভাবে রচনা করবেন যাতে কোনও এক সময় কেবলমাত্র ইউআরএলগুলির একটি ক্ষুদ্র ভগ্নাংশটি পোল করতে হয় (100, উল্লিখিত অন্য পোস্টার হিসাবে সম্ভবত একটি শালীন পুলের আকার, যদিও আপনি দেখতে পাচ্ছেন যে আপনি সাফল্যের সাথে আরও অনেকগুলি মোতায়েন করতে পারে)।
উপরের সমস্যাটি সমাধান করতে আপনি এই নকশার ধরণটি অনুসরণ করতে পারেন:
- থ্রেড শুরু করুন যা বর্তমানে চলমান থ্রেডগুলির সংখ্যা পর্যন্ত নতুন অনুরোধের থ্রেডগুলি প্রবর্তন করে (আপনি থ্রেডিং.এ্যাকটিভ_কাউন্টের মাধ্যমে তাদের ট্র্যাক করতে পারেন) বা থ্রেডের বিষয়গুলিকে একটি ডেটা স্ট্রাকচারে ঠেলে দিয়ে) = = আপনার একযোগে অনুরোধের সর্বোচ্চ সংখ্যা (100 বলুন) , তারপরে অল্প সময়ের জন্য ঘুমায়। প্রক্রিয়া করার জন্য আর কোনও URL থাকে না তখন এই থ্রেডটি সমাপ্ত করা উচিত। সুতরাং, থ্রেড জেগে থাকবে, নতুন থ্রেড চালু করবে এবং আপনার সমাপ্ত হওয়া অবধি ঘুমিয়ে থাকবে।
- অনুরোধের থ্রেডগুলি পরবর্তী ফলাফল এবং ফলাফলের জন্য কিছু ফলাফল কাঠামোতে তাদের ফলাফলগুলি সংরক্ষণ করে। আপনি যে কাঠামোটিতে ফলাফলগুলি সংরক্ষণ করছেন তা যদি হয়
list
বা dict
সিপাইটিতে থাকে তবে আপনি সুরক্ষিতভাবে লক ছাড়াই আপনার থ্রেড থেকে অনন্য আইটেম সংযোজন বা সন্নিবেশ করতে পারেন , তবে আপনি যদি কোনও ফাইলে লিখেন বা আরও জটিল ক্রস-থ্রেড ডেটা ইন্টারঅ্যাকশন প্রয়োজন হয় তবে আপনাকে একটি ব্যবহার করতে হবে এই রাষ্ট্রকে দুর্নীতির হাত থেকে রক্ষা করতে পারস্পরিক বর্জনীয় লক ।
আমি আপনাকে থ্রেডিং মডিউলটি ব্যবহার করার পরামর্শ দেব । চলমান থ্রেডগুলি চালু এবং ট্র্যাক করতে আপনি এটি ব্যবহার করতে পারেন। পাইথনের থ্রেডিং সমর্থনটি খালি তবে আপনার সমস্যার বর্ণনা থেকে বোঝা যায় যে এটি আপনার প্রয়োজনের জন্য পুরোপুরি যথেষ্ট।
অবশেষে, আপনি পাইথনে লিখিত সমান্তরাল নেটওয়ার্ক অ্যাপ্লিকেশনটির জন্য একটি দুর্দান্ত সোজা অ্যাপ্লিকেশন দেখতে চাইলে ssh.py দেখুন । এটি একটি ছোট গ্রন্থাগার যা বহু এসএসএইচ সংযোগকে সমান্তরালে পাইথন থ্রেডিং ব্যবহার করে। ডিজাইনটি আপনার প্রয়োজনীয়তার কাছে যথেষ্ট পরিমাণে রয়েছে যা আপনি এটি একটি ভাল সংস্থান হিসাবে খুঁজে পেতে পারেন।