পাইথনের সিপিইউ ব্যবহার কীভাবে বাড়ানো যায়


21

আমি অ্যালগরিদমগুলি নির্বাহ করতে পাইথন ব্যবহার করি এবং পাইথন আমি ব্যবহার করি না কেন এবং আমি বহু সংস্করণ চেষ্টা করেছি, সিপিইউ ব্যবহার 25% সর্বোচ্চে চলে যায়। পাইথন আমার বাকি সিপিইউ সংস্থানগুলির কেন সদ্ব্যবহার করবে না? আমি পরিষেবাটির অগ্রাধিকারটিকে স্বাভাবিক থেকে উচ্চ এবং পরে বাস্তব সময়ে পরিবর্তন করেছি, এর মধ্যে পুনরায় আরম্ভ করার সাথে, তবে কিছুই পরিবর্তন হয়নি।

পাইথনটি আমার সিপিইউতে 50% বা তারও বেশি ব্যবহার করার উপায় আছে?


আপনার সিপিইউ মাল্টিকোর সিপিইউ?
যাত্রামন গীক

হ্যাঁ, এটি একটি i5-480M এবং কন্ট্রোল প্যানেলে> পাওয়ার বিকল্পগুলি> সিপিইউ মিনিট / সর্বোচ্চ এটি 100% এ
ক্রিস্টোস কে।

উত্তর:


20

মোটামুটি, আপনি 4 টি লজিকাল কোর সহ একটি সিস্টেমে একক থ্রেডেড অ্যাপ্লিকেশন চালাচ্ছেন - যেমন আপনার সমস্ত কোর ব্যবহার করে একটি প্রক্রিয়া রয়েছে।

আপনার (এবং এটি তুচ্ছ নয়) একাধিক-থ্রেডযুক্ত হওয়ার জন্য অ্যালগরিদমটি পুনরায় লেখার প্রয়োজন হবে বা আপনার আরও বেশি সিপিইউ ব্যবহারের জন্য নির্দিষ্ট কোরগুলিতে আপনি কেবল 2 বা ততোধিক ঘটনা চালাতে পারবেন কিনা তা দেখুন। অন্য কোন উপায় নেই।


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

1
আপনার সিস্টেমটি কোরগুলির মধ্যে লোডকে ভারসাম্যপূর্ণ করছে। তবুও, একবারে কোনও দুটি কোর ব্যবহার করা হয় না।
gronostaj

ছেলেরা আপনি আমার ভয়কে নিশ্চিত করেছেন, মনে হচ্ছে আমি থ্রেডিং সম্পর্কে পড়া শুরু করার সময় সম্পর্কে
ক্রিস্টোস কে।

@ ফ্র্যাক্টাল_7: থ্রেডিং আপনার প্রত্যাশাগুলি আনতে পারে না। আমার উত্তর নীচে দেখুন।
রোল্যান্ড স্মিথ

15

পাইথন ভাষাটি বহু-কোর সিপিইউগুলির পূর্বাভাস দেয়, তাই এগুলি দেশীয়ভাবে ব্যবহার করে না এমনটি মোটেই আলাদা নয়।

অতিরিক্তভাবে, সমস্ত প্রোগ্রাম একাধিক কোর থেকে লাভ করতে পারে না। পদক্ষেপে সম্পন্ন একটি গণনা, যেখানে পরবর্তী পদক্ষেপটি আগের পদক্ষেপের ফলাফলের উপর নির্ভর করে, আরও বেশি কোর ব্যবহার করে দ্রুত হবে না। যে সমস্যাগুলি ভেক্টরাইজ করা যায় (একই পরিমাণে ডেটা বড় অ্যারে প্রয়োগ করা হয়) একাধিক কোর ব্যবহার করা অপেক্ষাকৃত সহজ করা যায় কারণ স্বতন্ত্র গণনাগুলি স্বাধীন।

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

এটি বলে, অজগর সহ একাধিক কোর ব্যবহারের বিভিন্ন উপায় রয়েছে।

  • অন্তর্নির্মিত multiprocessingমডিউল হয়। multiprocessing.Poolবর্গ সঙ্গে বহু সিপিইউ জুড়ে vectorization প্রদান করে map()এবং সংশ্লিষ্ট পদ্ধতি। যদিও এখানে একটি বাণিজ্য বন্ধ রয়েছে। যদি আপনাকে প্রক্রিয়াগুলির মধ্যে প্রচুর পরিমাণে ডেটা যোগাযোগ করতে হয় তবে সেই ওভারহেড একাধিক কোরের সুবিধাকে অস্বীকার করতে পারে।
  • নম্পির একটি উপযুক্ত বিল্ড ব্যবহার করুন। যদি ন্পিটি একটি মাল্টিথ্রিডিং এ্যাটলাস লাইব্রেরি দিয়ে নির্মিত হয় তবে এটি বড় সমস্যাগুলির তুলনায় দ্রুত হবে।
  • নিউমেক্সপ্র , প্যারালাল পাইথন , কোরপি বা কোপেনহেগেন ভেক্টর বাইট কোডের মতো এক্সটেনশন মডিউলগুলি ব্যবহার করুন ।

নোট করুন যে threadingমডিউলটি এই ক্ষেত্রে সমস্ত কার্যকর নয়। মেমরি পরিচালনা সহজ রাখার জন্য, গ্লোবাল ইন্টারপ্রেটার লক ("জিআইএল") প্রয়োগ করে যে একবারে কেবল একটি থ্রেড পাইথন বাইটকোড চালানো যেতে পারে। যদিও নাম্পির মতো বাহ্যিক মডিউলগুলি অভ্যন্তরীণভাবে একাধিক থ্রেড ব্যবহার করতে পারে।


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