পিপিথ 6.3 গুণ বেশি গতিতে থাকলে পিপিথনের উপরে আমি পাইপাই ব্যবহার করব না কেন?


685

আমি পাইপাই প্রকল্প সম্পর্কে অনেক শুনেছি । তাদের দাবি এটি তাদের সাইটে সিপিথন দোভাষী থেকে 6.3 গুণ বেশি গতিযুক্ত

যখনই আমরা পাইথনের মতো গতিশীল ভাষা নিয়ে কথা বলি, গতি শীর্ষস্থানীয় সমস্যাগুলির মধ্যে একটি। এটি সমাধানের জন্য, তারা বলে পিপিপি 6.3 গুণ দ্রুত faster

দ্বিতীয় ইস্যুটি সমান্তরালতা, কুখ্যাত গ্লোবাল ইন্টারপ্রেটার লক (জিআইএল)। এর জন্য পাইপাই বলেছেন যে এটি জিআইএল-কম পাইথন দিতে পারে

পিপিপি যদি এই দুর্দান্ত চ্যালেঞ্জগুলি সমাধান করতে পারে তবে এর দুর্বলতাগুলি কী যা ব্যাপক গ্রহণ বন্ধ করে দিচ্ছে? তার অর্থ হল, আমার মতো একজন সাধারণ পাইথন বিকাশকারী, এই মুহুর্তে পাইপাইতে স্যুইচ করা থেকে বাধা দিচ্ছেন কি ?


30
মন্তব্যগুলি সাফ করা হয়েছে কারণ বেশিরভাগই এমন জিনিস ছিল যা উত্তরে প্রকাশিত হওয়া উচিত (এবং কিছু ক্ষেত্রে রয়েছে), বা একেবারেই বলা উচিত নয়। এই প্রশ্নের সাবজেক্টিভিটি সম্পর্কিত উত্থাপিত উদ্বেগগুলির কয়েকটি সমাধান করার জন্যও সম্পাদিত। দয়া করে তথ্য ব্যবহার করে উত্তর দেওয়ার চেষ্টা করুন, এবং যদি সম্ভব হয় তবে উত্সগুলির সাহায্যে ব্যাক আপগুলিও!
শোগ 9

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

উত্তর:


657

দ্রষ্টব্য: পিপিপি এই প্রশ্নটি যখন জিজ্ঞাসা করা হয়েছিল, 2013 এর চেয়ে এখন আরও পরিপক্ক এবং আরও ভাল সমর্থিত। অতিক্রান্ত তথ্য থেকে সিদ্ধান্ত আঁকতে এড়িয়ে চলুন।


  1. পিপাই, অন্যরা যেমন উল্লেখ করার জন্য দ্রুত হয়েছে তেমন সি এক্সটেনশনের জন্য যথাযথ সমর্থন রয়েছে । এটির সমর্থন রয়েছে তবে সাধারণত পাইথনের চেয়ে ধীর গতিতে এটি সবচেয়ে ভাল। সুতরাং প্রচুর মডিউল কেবল সিপিথন প্রয়োজন require পিপিপি নিম্পি সমর্থন করে না পাইপাই এখন নিম্পিকে সমর্থন করে । কিছু এক্সটেনশান এখনও সমর্থিত নয় (পান্ডাস, সায়পাই ইত্যাদি), পরিবর্তনটি করার আগে সমর্থিত প্যাকেজগুলির তালিকায় একবার দেখুন ।
  2. পাইথন 3 সমর্থন এই মুহুর্তে পরীক্ষামূলক। সবে স্থিতিশীল পৌঁছেছে! 20 ই জুন, 2014 পর্যন্ত, পাইপাই 3 2.3.1 - ফুলক্রাম বাইরে রয়েছে !
  3. পাইপি কখনও কখনও "স্ক্রিপ্টস" এর জন্য খুব দ্রুত হয় না , যা প্রচুর লোক পাইথন ব্যবহার করে। এগুলি স্বল্প-চলমান প্রোগ্রাম যা সাধারণ এবং ছোট কিছু করে। পিপাই একটি জেআইটি সংকলক হওয়ায় এর মূল সুবিধাগুলি দীর্ঘমেয়াদী সময় এবং সাধারণ ধরণের (যেমন সংখ্যা) থেকে আসে। সত্যি বলতে গেলে পাইপাইয়ের প্রাক-জেআইটির গতি সিপিথনের তুলনায় বেশ খারাপ
  4. নিষ্ক্রিয়তা । পিপাই-তে সরানোর জন্য প্রায়শই পুনর্নির্মাণের প্রয়োজন হয় যা কিছু লোক এবং সংস্থার পক্ষে খুব বেশি কাজ।

সেগুলিই আমাকে প্রভাবিত করার প্রধান কারণ I'd


14
আপনি পুনঃনির্ধারণের উল্লেখ করেছেন। উদাহরণস্বরূপ, আমার ওয়েব হোস্টের পাইথন ২.৪ এবং 2.5 এর মধ্যে একটি পছন্দ রয়েছে; এবং আমার নিকটবর্তী একটি "বিনোদন সফটওয়্যার প্রস্তুতকারী" শীঘ্রই আপগ্রেড করার কোনও পরিকল্পনা ছাড়াই ২.6 ব্যবহার করছে। কখনও কখনও রূপান্তরকরণের ব্যয় আবিষ্কার করতে এটি একটি বড়, ব্যয়বহুল প্রচেষ্টা হতে পারে।
মাইক হাউস্কি

19
পাইপাই সংখ্যার জন্য ব্যবহৃত উচ্চতর অনুকূলিত মাল্টিথ্রেডেড ক্যাশে-সচেতন সি লাইব্রেরির চেয়ে জেনেরিক সি সম্পর্কে আরও "সি হিসাবে দ্রুত" হওয়া বেশি। সংখ্যার জন্য পাইথন কেবলমাত্র বড় অ্যারেগুলিতে পয়েন্টারগুলির আশেপাশে ফেরি করতে ব্যবহৃত হয়। পিপিপি "সি হিসাবে তত দ্রুত" হওয়ার অর্থ "আপনার পয়েন্টারগুলি + মেটাডেটা সি হিসাবে দ্রুত গতিতে ঘুরে যায়"। তেমন কিছু না. তাহলে পাইথনকে মোটেও বিরক্ত করবেন কেন? সিব্লাস এবং ল্যাপেকে ফাংশনের স্বাক্ষরগুলি দেখুন Go
cjordan1

12
@ সিজর্দান ১: আপনি যা বলছেন তা আমি পাই না। পাইথনের উচ্চ স্তরের নম্পূর্ণ নির্মাণগুলি অত্যন্ত অভিব্যক্তিপূর্ণ ( np.sum(M[1:2*n**2:2, :2*n**2] * M[:2*n**2:2, :2*n**2].conjugate(), axis=1)?) এবং এটি পাইথনকে বৈজ্ঞানিক সম্প্রদায়ের জন্য খুব উপযুক্ত করে তোলে। তদতিরিক্ত, পাইথনের অ-নিবিড় অংশগুলি করা এবং ছোট থেকে নিবিড় লুপগুলির জন্য সিতে শেলিং করা একটি সাধারণ এবং ব্যবহারযোগ্য কৌশল।
বীড্রাক

26
@ উইড্রাক এটাই আমি বোঝাতে চাইছিলাম "সিবি্লাস এবং ল্যাপেকে ফাংশনের স্বাক্ষরগুলি দেখুন" কারণ তারা ব্যবহার করা এত দীর্ঘ এবং কঠিন যে আপনি পয়েন্টার এবং মেটাডেটার চারপাশে ফেরার জন্য পাইথনটি কেন ব্যবহার করবেন তা আপনি তাত্ক্ষণিকভাবে বুঝতে পারবেন।
সিজর্ডান 1

5
@ tommy.carstensen গভীরতায় যাওয়ার জন্য এটি সত্যিই ভাল জায়গা নয়, তবে আমি চেষ্টা করব। ১. এটি এখনকার চেয়ে লেখার সময় অনেক বেশি সত্য ছিল। ২. "স্ক্রিপ্টগুলি" আইও-ভারী। পাইপাইয়ের আইও সিপিথনের তুলনায় এখনও প্রায় ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে চলত। ৩. পাইপাই স্ট্রিংগুলি পরিচালনা করতে সিপিথনের চেয়ে ধীর ছিল। এখন এটি প্রায়শই ভাল এবং খুব কমই খারাপ হয়। ৪. অনেকগুলি "স্ক্রিপ্ট" কেবল আঠালো কোড - দোভাষীকে দ্রুততর করা সে ক্ষেত্রে সামগ্রিক রানটাইমের উন্নতি করতে পারে না। ৫. পিপাইয়ের উষ্ণতার সময়গুলি আরও বেশি ব্যবহৃত হত - স্বল্প চলমান স্ক্রিপ্টগুলি খুব কমই প্রচুর পরিমাণে গরম কোড তৈরি করতে পরিচালিত হয়েছিল।
Veedrac

104

সেই সাইটটি পাইপাই সিপিথনের চেয়ে 6.3 গুণ বেশি দ্রুতগতির দাবি করে না । উদ্ধৃতি থেকে:

সমস্ত বেঞ্চমার্কের জ্যামিতিক গড় হার সিপিথনের চেয়ে 0.16 বা 6.3 গুণ বেশি দ্রুত

এটি আপনার দেওয়া কম্বল বিবৃতিটির থেকে খুব আলাদা একটি বিবৃতি এবং আপনি যখন পার্থক্যটি বুঝতে পারবেন তখন আপনি কমপক্ষে একটি কারণ বুঝতে পারবেন যে আপনি কেবল "পিপাই ব্যবহার করুন" কেন বলতে পারবেন না। মনে হতে পারে আমি নিট-বাছাই করছি তবে কেন এই দুটি বিবৃতি সম্পূর্ণ আলাদা তা বোঝা জরুরি।

এটি ভেঙে ফেলার জন্য:

  • তারা যে বিবৃতি দেয় তা কেবল তারা ব্যবহার করা মানদণ্ডে প্রযোজ্য। এটি আপনার প্রোগ্রাম সম্পর্কে একেবারে কিছুই বলে না (যদি না আপনার প্রোগ্রামটি তাদের অন্যতম মানদণ্ডের মতো হয়)।

  • বিবৃতিটি গড়ে প্রায় একদল বেঞ্চমার্কের is কোনও দাবি নেই যে পিআইপি চালানো তাদের পরীক্ষা করা প্রোগ্রামগুলির জন্যও 6.3 গুণ উন্নতি দেবে।

  • পিপিথন এমনকি যে সমস্ত প্রোগ্রাম সিপিথন চালায় সেগুলিও চালিয়ে দেবে এমন কোনও দাবি নেই , দ্রুততর হোক।


15
অবশ্যই কোনও দাবি নেই যে পাইপাই সমস্ত পাইথন কোড দ্রুত চালাবে। তবে আপনি যদি সমস্ত খাঁটি পাইথন অ্যাপ্লিকেশন নেন তবে আমি বাজি ধরতে পারি যে এর মধ্যে উল্লেখযোগ্য সংখ্যাগরিষ্ঠ পাইপাইতে আরও দ্রুত (> 3x গুণ) চালিয়ে যাবে তবে সিপিথনে।
রবার্ট জেরেবাবা

18
আপনার প্রথম দুটি বুলেট পয়েন্ট উভয়ই বোঝায় না। আপনি কীভাবে বলতে পারেন যে বেঞ্চমার্কগুলি "আপনার প্রোগ্রাম সম্পর্কে একেবারে কিছুই নয়" বলে। এটি অত্যন্ত স্পষ্ট যে বেঞ্চমার্কগুলি সমস্ত বাস্তব অ্যাপ্লিকেশনগুলির নিখুঁত সূচক নয়, তবে তারা অবশ্যই একটি সূচক হিসাবে কার্যকর হতে পারে। এছাড়াও আমি বুঝতে পারি না যে আপনি একটি গ্রুপ বেঞ্চমার্কের গড় প্রতিবেদন করার বিষয়ে তাদের বিভ্রান্তিকর কি মনে করেন। তারা বর্ণনা করে যে এটি খুব গড় it's যদি কোনও প্রোগ্রামার যদি গড় বুঝতে না পারে তবে ভাষার পারফরম্যান্সের চেয়ে তাদের আরও গুরুতর উদ্বেগ রয়েছে।
শান জেফ্রি পিটজ

6
@ সিয়ানজিফ্রেপিটিজ - আমি দাবি করছিলাম না পাইপাইয়ের সাইটটি যে কোনওভাবেই বিভ্রান্তিমূলক ছিল - তারা সঠিকভাবে তাদের ফলাফল উপস্থাপন করেছে। তবে মূল প্রশ্নটি তাদের ভুল জিজ্ঞাসা করেছিল এবং দেখিয়েছিল যে লেখক 'গড়' শব্দের গুরুত্ব বুঝতে পারেন নি। স্বতন্ত্র মানদণ্ডগুলির অনেকগুলি 6.3 গুণ দ্রুত হয় না। এবং যদি আপনি ভিন্ন ধরণের গড় ব্যবহার করেন তবে আপনি আলাদা মান পান, সুতরাং "6.3 এক্স দ্রুত" "জ্যামিতিক গড় 6.3 এক্স দ্রুত" এর পর্যাপ্ত সংক্ষিপ্তসার নয়। "গ্রুপ এ গ্রুপ বি এর তুলনায় জেড গুণ দ্রুত" অর্থবহ হতে খুব অস্পষ্ট।
spookylukey

6
-১: @ স্পুকাইলুকি আপনি মনে করছেন যে দাবিটি সমর্থন করার পক্ষে প্রমাণ না দিয়ে বেঞ্চমার্ক স্যুট পক্ষপাতদুষ্ট। সমালোচনা সর্বদা প্রমাণ সহকারে সমর্থন করা উচিত!
এভেজেনি সার্জিভ

5
@ অ্যাভেজেনিসারজিভ - না, আমি বোঝাচ্ছি যে সমস্ত মানদণ্ড পক্ষপাতদুষ্ট! অবশ্যই ইচ্ছাকৃতভাবে অবশ্যই নয় Not সম্ভাব্য দরকারী প্রোগ্রামগুলির জায়গাগুলি অসীম এবং অবিশ্বাস্যভাবে বৈচিত্রময় এবং বেঞ্চমার্কগুলির একটি সেট কেবল সেই মানদণ্ডের কার্যকারিতা পরিমাপ করে। "সিপিথনের চেয়ে পাইপাই কত গতিময়?" "জো এর চেয়ে ফ্রেড কত দ্রুত?" জিজ্ঞাসার মতো, যা ওপি জানতে চায় বলে মনে হচ্ছে।
spookylukey

74

যেহেতু পাইপি 100% সামঞ্জস্যপূর্ণ নয়, কম্পাইল করতে 8 গিগ র্যাম লাগে, এটি একটি চলন্ত লক্ষ্য এবং অত্যন্ত পরীক্ষামূলক, যেখানে সিপিথন স্থিতিশীল, 2 দশক ধরে মডিউল নির্মাতাদের জন্য ডিফল্ট লক্ষ্য (সি সি এক্সটেনশন সহ যা পাইপিতে কাজ করে না ), এবং ইতিমধ্যে ব্যাপকভাবে মোতায়েন।

পাইপি সম্ভবত রেফারেন্স বাস্তবায়ন হবে না তবে এটি থাকা ভাল সরঞ্জাম।


2
পাইপ.অর্গ.ডাউনলোড.চ.টি.এমএল অনুসারে, পাইপাইয়ের ৮ টি নয় , ile৪- বিট সিস্টেমে) সংকলন করতে 4 জিবি র‌্যামের প্রয়োজন And এবং প্রয়োজনে 3 পৃষ্ঠার নীচে এটি করার জন্য সেই পৃষ্ঠাতে একটি বিকল্প রয়েছে।
নাইট

4
@ কেইনাইট ১: ২০১৫ সালের মতো এটি নতুন, ডকুমেন্টেশনটি GBতিহাসিকভাবে 8 জিবি পড়েছে। 2: 2015 সালে অনুশীলনে আপনার এখনও 6-7 বিনামূল্যে সহ কমপক্ষে 8 টি দরকার।
Tritium21

4
সংকলনের জন্য মেমরির প্রয়োজনীয়তা এতটা প্রাসঙ্গিক নয় যদি আপনি কোনও বিল্ড বা বিতরণ ব্যবহার করেন । "চলমান লক্ষ্য, এবং অত্যন্ত পরীক্ষামূলক" হিসাবে, আপনি ভাঙা স্টাফগুলির কয়েকটি উদাহরণ দিতে পারেন? আবার, লোকেরা যদি রাত্রে নির্মিত বা উত্সের পরিবর্তে রিলিজ বিল্ডগুলি ব্যবহার করে তবে তাদের কার্যকারিতাটির কি যুক্তিসঙ্গত প্রত্যাশা নেই?
smci

@ এসএমসিআই এটি প্রাচীন তথ্যগুলির উপর ভিত্তি করে একটি প্রাচীন প্রশ্ন, প্রাচীন উত্তরগুলি সহ। এই প্রশ্নটি এবং প্রতিটি উত্তর 4 বছর আগে পাইপির অবস্থার জন্য historicalতিহাসিক বলে বিবেচনা করুন।
ট্রিটিয়াম 21

1
@ ট্রিটিয়াম 21: আমি কেবলমাত্র বর্তমান উত্তরের প্রতি আগ্রহী। এটা কি? আপনি আপনার উত্তরটি সম্পাদনা করতে পছন্দ করতে পারেন "2013 সালের হিসাবে পাইপনের বনাম সংস্করণ ২.x তুলনা করা ছিল ..." এছাড়াও যদি প্রশ্নের "6.3x জ্যামিতিক-গড়" দাবিটি পুরানো হয় ( যেমন 4/2017 এর তারা 7.5x দাবি করে, তবে তারপরেও বেঞ্চমার্কের উপর নির্ভর করে ... ), তারপরে এডিট করা খুব দরকার (সংস্করণ সংখ্যা, সর্বশেষ ডেটা, ইত্যাদি) আমার মনে হয় বেঞ্চমার্ক স্যুটটি খুব প্রাসঙ্গিক নয়, খুব কমই কেউ চালাবেন আজকাল সিপিইউতে স্ক্রিপ্টিং ভাষায় রাইক্র্যাকিং। আমি পাইবঞ্চমার্স.আরগ
স্মি

37

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

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

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


17
আমি ভাবি না যে সি একটি ভাষা যা শীঘ্রই যে কোনও সময় যে কোনও জায়গায় চলেছে (আমি বলতে চাই, এটি আমাদের জীবদ্দশায় অদৃশ্য হবে না)। অন্য কোথাও চলমান অন্য ভাষা না পাওয়া পর্যন্ত আমাদের সি থাকবে (দ্রষ্টব্য, জেভিএম সি-তে লেখা আছে এমনকি জাভা, যে ভাষা "সর্বত্র চলমান" তার সর্বত্রতার জন্য সি প্রয়োজন।) অন্যথায় আমি বেশিরভাগ ক্ষেত্রে এই পোস্টের সাথে একমত তার পয়েন্ট।
ট্রিটিয়াম

7
@ ট্রিটিয়াম 21: হ্যাঁ, আমি কেবল সেখানে সম্পাদনা করছি। সি বিদ্যমান থাকায় আমি ঠিক আছি, তবে আমি মনে করি সি এর উপরে পাইথনের নির্ভরতা বিপজ্জনকভাবে ক্ষতিকারক, এবং পাইপাই তার দুর্দান্ত উদাহরণ: এখন আমাদের কাছে দ্রুত পাইথন পাওয়ার সুযোগ রয়েছে, তবে আমরা সি'র উপর নির্ভর করে বছরের পর বছর বিচ্ছিন্ন হয়ে পড়েছি we're পাইথনের নিজের পায়ে দাঁড়ানো আরও ভাল। এমনকি পাইথন নিজেই
সিটিতে

4
তার উপর ডাবল এজ তরোয়াল - অজগরকে এত জনপ্রিয় করে তোলার অংশটি হ'ল অন্যান্য অ্যাপ্লিকেশনগুলি প্রসারিত করার এবং অন্যান্য অ্যাপ্লিকেশন দ্বারা প্রসারিত করার ক্ষমতা। আপনি যদি তা সরিয়ে নেন তবে আমার মনে হয় না আমরা পাইথন নিয়ে কথা বলব।
Tritium21

10
@ ব্রেনবার্ন সিটির প্রতি পাইথনের নির্ভরতা ক্ষতিকর দাবি করা একেবারে বোকামি। পাইথনের সি-এপিআই না থাকলে পাইথন তার বেশিরভাগ সত্যই শক্তিশালী গ্রন্থাগার এবং দুর্দান্ত সংখ্যক পাইপথনটি পুরো সংখ্যাসূচক / বৈজ্ঞানিক বাস্তুসংস্থান এবং জিইউআই ইন্টারফেস সহ তার গঠনমূলক কিশোর বছরগুলিতে (90 এর দশকের শেষের দিকে) অর্জন করতে পারত না। পাইথনের ব্যবহারের পুরো মহাবিশ্ব সম্পর্কে কিছুটা দৃষ্টিভঙ্গি পেতে এ জাতীয় কম্বল বিবৃতি দেওয়ার আগে ঘুরে দেখুন।
পিটার ওয়াং

4
@ পিটারওয়াং those সমস্ত গ্রন্থাগার পাইথনে লেখা যেতে পারে, তবে সেগুলি তত দ্রুত হবে না। ব্রেইনবার্ন যা বলছে তা হ'ল এখন আমাদের কাছে অজগরকে দ্রুত পর্যাপ্ত করার সুযোগ রয়েছে যাতে সেই লিবগুলি অজগরে লেখা যায় তবে আমরা সেই সুযোগটি নিতে অস্বীকার করছি, কারণ এটি গ্রহণের অর্থ সি লাইব্রেরিগুলি ব্যবহার করার ক্ষমতা হারাতে হবে। আমি বিশ্বাস করি যে এর কি তিনি ক্ষতিকর দ্বারা বোঝানো না যে সি লাইব্রেরি অস্তিত্ব একটি খারাপ জিনিস কিন্তু ফাস্ট লাইব্রেরি করা একমাত্র উপায় সি ব্যবহার করছে যা
vikki

14

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

বিডিএফএল এবং সিপিথন বিকাশকারীরা একটি উল্লেখযোগ্য বুদ্ধিমান গোষ্ঠী এবং সিপাইথনকে এমন একটি দৃশ্যে দুর্দান্ত অভিনয় করতে সহায়তা করার ব্যবস্থা করেছে। এখানে একটি নির্লজ্জ ব্লগ প্লাগ: http://www.hydrogen18.com/blog/unpickling-buffers.html । আমি স্ট্যাকলেস ব্যবহার করছি, যা সিপিথন থেকে প্রাপ্ত এবং সম্পূর্ণ সি মডিউল ইন্টারফেস ধরে রেখেছে। সেক্ষেত্রে পাইপাই ব্যবহার করে আমি কোনও সুবিধা পাইনি।


1
পিপাইয়ের অনেকগুলি রয়েছে, সাবধানে চালানো বেঞ্চমার্ক (দুর্ভাগ্যক্রমে সিপিথনের বিপরীতে, যার এই মুহূর্তে কোনও ব্যবহারকারী-মুখী বেঞ্চমার্ক স্যুট নেই)। অবশ্যই নেটওয়ার্ক ট্র্যাফিকের জন্য পাইপাই যাদুতে দ্রুত কোনও কিছু করতে পারে না।
জুলিয়ান

1
জুলিয়ান, এটি লক্ষণীয় যে পিপিপি লোকেরা বছরের পর বছর ধরে সেই নির্দিষ্ট বেনমার্ক স্যুটটির রানটাইম উন্নত করার জন্য প্রচুর চেষ্টা করে চলেছে। কিছুটা ডিগ্রি দেখে মনে হচ্ছে যে তারা এই মানদণ্ডের সেটগুলিতে তাদের অপটিমাইজেশনকে "অত্যধিক মানিয়ে" নিচ্ছে এবং আমার অভিজ্ঞতার সাথে খাঁটি সংখ্যাসূচক গণনাগুলি (যা ফোর্টরান বা সি 99 এ আরও ভাল), আমি পাইপিকে আর কখনও পাইনি সিপিথনের চেয়ে X 2 এক্স দ্রুত।
অ্যালেক্স রুবিনস্টাইন

9
@ অ্যালেক্সরুবিনস্টেইন তবে পিপাইতে কাজ করা লোকদের দৃষ্টিভঙ্গি সবসময়ই ছিল যে আপনি যদি পাইপাই সিপিথনের চেয়ে ধীর গতির কোনও ঘটনা খুঁজে পান এবং আপনি এটি যুক্তিসঙ্গত মানদণ্ডে পরিণত করতে পারেন তবে স্যুটটিতে যুক্ত হওয়ার ভাল সম্ভাবনা রয়েছে।
gsnedders

1
আমি আপনার ব্লগ চেক করেছি। আপনার ফলাফলগুলিতে, প্লেপ-পাইথন জুটির (আচার, স্ট্রিংআইও) দেখায় যে পাইপাই সিপিথনের চেয়ে yp 6.8x দ্রুত। আমি মনে করি এটি একটি কার্যকর ফলাফল। আপনার উপসংহারে, আপনি চিহ্নিত করেছেন (সঠিকভাবে) যে পাইপ কোড (যা প্লেইন পাইথন!) সিপিথন কোড নয় সি কোড (সিপিকেল, সিস্ট্রিংআইও) এর চেয়ে ধীর।
কালেব হাটিংহ

1
@gsnedders আমি একাধিক অনুষ্ঠানে রিনো টাইপের উপর ভিত্তি করে একটি মানদণ্ড প্রস্তাব করেছি । তারা এখনও এটি স্যুটটিতে যোগ করতে পারেনি।
ব্রেচ্ট ম্যাচিলস 13

12

প্রশ্ন: পিপিথন সিপিথনের তুলনায় এই দুর্দান্ত চ্যালেঞ্জগুলির (গতি, স্মৃতিশক্তি গ্রহণ, সমান্তরালতা) সমাধান করতে পারে তবে এর দুর্বলতাগুলি কী কী বৃহত্তর গ্রহণকে বাধা দিচ্ছে?

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

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

পিপিওয়াই উল্লিখিত দুর্দান্ত চ্যালেঞ্জগুলি সমাধান করে এবং সাধারণভাবে সিপিথনের চেয়ে দ্রুত, কম স্মৃতি ক্ষুধার্ত এবং সমান্তরালতার পক্ষে আরও বন্ধুত্বপূর্ণ হবে কিনা তা একটি স্বল্প প্রশ্ন যা স্বল্পমেয়াদে সমাধান করা যায় না। কিছু লোক বাজি দিচ্ছেন যে পাইপাই কোনও ক্ষেত্রে সাধারণ সমাধান সরবরাহ করতে সক্ষম হবে না এটি সব ক্ষেত্রে সিপিথন ২.7 এবং ৩.৩ এ আধিপত্য বিস্তার করতে সক্ষম করে।

পিপিপি যদি সিপিথনের তুলনায় সাধারণভাবে সাফল্য অর্জন করে, যা সন্দেহজনক, তবে এর বৃহত্তর গ্রহণকে প্রভাবিত করে এমন প্রধান দুর্বলতা হবে সিপিথনের সাথে তার সামঞ্জস্যতা। সিপিইউন এবং সিএসইউস ওএসএসের বিস্তৃত পরিসরে চালিত হওয়ার মতো বিষয়গুলিরও উপস্থিত রয়েছে, তবে পাইপির পারফরম্যান্স এবং সিপিথন-সামঞ্জস্য লক্ষ্যগুলির তুলনায় এই বিষয়গুলি খুব কম গুরুত্বপূর্ণ।


প্রশ্ন: আমি এখন পাইপাইয়ের সাথে সিপিথন প্রতিস্থাপনের ক্ষেত্রে ড্রপ করতে পারি না কেন?

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


এই উত্তরটি কোনও মানদণ্ড উদ্ধৃত করে না বা রেফারেন্স সরবরাহ করে না।
qwr

7

সিপিথনের রেফারেন্স গণনা এবং আবর্জনা সংগ্রহ রয়েছে, পাইপাইতে কেবল আবর্জনা সংগ্রহ রয়েছে।

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

কিছু অন্যান্য সফ্টওয়্যার উভয়ের সাথে কাজ করে তবে সিপিথনের সাথে কম মেমরি ব্যবহার করে, কারণ অব্যবহৃত বস্তুগুলি আগে মুক্তি পেয়েছিল। (এটি কতটা তাৎপর্যপূর্ণ তা বোঝাতে এবং আমার প্রয়োগের অন্যান্য বিবরণ মেমরির ব্যবহারকে কীভাবে প্রভাবিত করে তা বোঝাতে আমার কোনও মাপকাঠি নেই))


17
এটি জোর দেওয়া উচিত যে __del__সিপিথনে এমনকি প্রথম দিকে বা একেবারে ডাকা হওয়ার উপর নির্ভর করা ভুল wrong আপনি যেমন এটি রেখেছেন, এটি সাধারণত কাজ করে এবং কিছু লোক এটির নিশ্চয়তার অর্থ এটি গ্রহণ করে। যদি অবজেক্টের উল্লেখ করে এমন কিছু যদি রেফারেন্স চক্রের মধ্যে ধরা পড়ে (যা বরং সহজ - আপনি কি জানতেন যে নির্দিষ্ট ব্যতিক্রমী উপায়ে বর্তমান ব্যতিক্রম পরিদর্শন করা একটি রেফারেন্স চক্র তৈরি করে?) চূড়ান্তকরণ পরবর্তী চক্রের জিসি অবধি অনির্দিষ্টকালের জন্য বিলম্বিত হয় (যা কখনই না হতে পারে )। বস্তু নিজেই একটি রেফারেন্স চক্রের অংশ হয়, তাহলে __del__বলা হবে না এ সব (পাইথন 3.4 পূর্বে)।

3
সিপিথনে প্রতি বস্তুর ওভারহেড উচ্চতর, যা আপনি প্রচুর পরিমাণে অবজেক্ট তৈরি করা শুরু করার পরে প্রচুর পরিমাণে গুরুত্বপূর্ণ। আমি বিশ্বাস করি পিপিপি একটি জিনিসের জন্য ডিফল্টরূপে স্লটের সমতুল্য কাজ করে।

4

প্রচুর প্রকল্পের জন্য, গতির দিক দিয়ে বিভিন্ন অজগরটির মধ্যে আসলে 0% পার্থক্য রয়েছে। এগুলিই ইঞ্জিনিয়ারিংয়ের সময় দ্বারা প্রাধান্য পায় এবং যেখানে সমস্ত অজগরগুলিতে সমান পরিমাণ গ্রন্থাগার সমর্থন রয়েছে।


1
যদি আপনার প্রকল্পটি এত সহজ হয় তবে স্পষ্টতই এটি কোনও বিষয় নয়, তবে যে কোনও ভাষার বাস্তবায়নের ক্ষেত্রে একই কথা বলা যেতে পারে: আপনি যা করেন তা অপেক্ষাকৃত পারফরম্যান্ট এবিআইয়ের মাধ্যমে অন্যান্য গ্রন্থাগারের কার্যকারিতা হয়, তবে এটি সমস্ত অপ্রাসঙ্গিক।

1
সাধারণের সাথে এর কিছু করার নেই। ইঞ্জিনিয়ারিংয়ের সময়ে ফিডব্যাক লুপটি গুরুত্বপূর্ণ। কখনও কখনও রান সময় চেয়ে অনেক বেশি গুরুত্বপূর্ণ।
স্টিফান এগগারমন্ট

1
ঠিক আছে, আপনি খুব অস্পষ্টভাবে কথা বলছেন (ইঞ্জিনিয়ারিংয়ের সময় কী কী তা কী কী খাওয়ানো হচ্ছে ইত্যাদি সম্পর্কিত কোনও প্রতিক্রিয়া ছাড়াই ইঞ্জিনিয়ারিংয়ের সময় সম্পর্কিত কোনও উল্লেখ ছাড়াই ইঞ্জিনিয়ারিংয়ের সময়), তাই আমি যাচ্ছি ক্রিপ্টিক রেফারেন্সের পরিবর্তে এই কথোপকথনের সামনে মাথা নত করতে।

এখানে অস্পষ্ট কিছুই। ওওডিএ লুপ বা পিডিসিএ দেখুন।
স্টিফান এগারমন্ট

3
@ ইউজার ওয়েল, যে কোনও রান একবারে লিখতে এক মাস সময় লাগে এবং চালাতে এক মিনিট লাগে, পিপিওয়াই ব্যবহার থেকে পিআইপি এক হাজার গুণ দ্রুত গতিতে হলেও পিপিপি ব্যবহার থেকে সামগ্রিক 0.0% গতিবেগ (1 মিমেন্ট + 1 মিমি বনাম 1 মমিন্থ) পাবে। স্টিফান দাবি করছিলেন না যে সমস্ত প্রকল্পের গতি 0% হবে।
gmatht

4

এটি সহজ করার জন্য: পাইপাই এমন গতি সরবরাহ করে যা সিপিথনের অভাবযুক্ত তবে এর সামঞ্জস্যতা ত্যাগ করে। তবে বেশিরভাগ লোক পাইথনটিকে তার নমনীয়তা এবং তার "ব্যাটারি-অন্তর্ভুক্ত" বৈশিষ্ট্য (উচ্চ সামঞ্জস্য) জন্য বেছে নেয়, তার গতির জন্য নয় (এটি এখনও পছন্দসই)।


16
"ব্যাটারি-অন্তর্ভুক্ত" এর অর্থ বৃহত স্ট্যান্ডার্ড লাইব্রেরি ,
এএফএইকি

4

আমি উদাহরণ পেয়েছি, যেখানে পাইপাই পাইথনের চেয়ে ধীর। তবে: কেবল উইন্ডোজে।

C:\Users\User>python -m timeit -n10 -s"from sympy import isprime" "isprime(2**521-1);isprime(2**1279-1)"
10 loops, best of 3: 294 msec per loop

C:\Users\User>pypy -m timeit -n10 -s"from sympy import isprime" "isprime(2**521-1);isprime(2**1279-1)"
10 loops, best of 3: 1.33 sec per loop

সুতরাং, আপনি যদি পাইপাইয়ের কথা ভাবেন তবে উইন্ডোজকে ভুলে যান। লিনাক্সে, আপনি দুর্দান্ত ত্বরণ অর্জন করতে পারেন। উদাহরণ (1 এবং 1,000,000 এর মধ্যে সমস্ত মৌলিক তালিকা তৈরি করুন):

from sympy import sieve
primes = list(sieve.primerange(1, 10**6))

পাইথনের চেয়ে পাইপাইতে এটি 10 ​​(!) গুণ দ্রুত গতিতে চলে। তবে উইন্ডোতে নয়। সেখানে এটি মাত্র 3x দ্রুত 3x


মজাদার! আরও কিছু তুলনা এবং সংখ্যা দুর্দান্ত হত।
ben26941

1

পাইপাইয়ের কিছু সময়ের জন্য পাইথন 3 সমর্থন রয়েছে, তবে 2 শে এপ্রিল, 2018 থেকে অ্যান্টনি শোর এই হ্যাকারনুন পোস্ট অনুসারে পাইপাই 3 পাইপাই (পাইথন 2) এর তুলনায় এখনও কয়েকগুণ ধীর গতির।

অনেকগুলি বৈজ্ঞানিক গণনার জন্য, বিশেষত ম্যাট্রিক্স গণনার জন্য, নিম্পি একটি ভাল পছন্দ ( এফএকিউ দেখুন: আমার কি নমুনা বা নমপাটাই ইনস্টল করা উচিত? )।

পাইপি gmpy2 সমর্থন করে না। আপনি তার পরিবর্তে gmpy_cffi ব্যবহার করতে পারেন যদিও আমি এর গতি পরীক্ষা করি নি এবং ২০১৪ সালে প্রকল্পটির একটি প্রকাশ হয়েছে।

প্রোজেক্ট অয়লার সমস্যার জন্য আমি পাইপিওয়ির ঘন ঘন ব্যবহার করি এবং সহজ সংখ্যার গণনাগুলি প্রায়শই from __future__ import divisionআমার উদ্দেশ্যে যথেষ্ট, তবে পাইথন 3 সমর্থন এখনও 2018 হিসাবে কাজ করা হচ্ছে, আপনার সেরা বাজিটি 64-বিট লিনাক্সের সাথে রয়েছে। উইন্ডোজ পাইপাই 3.5 ভি 6.0, ডিসেম্বর 2018 এর সর্বশেষতম, বিটাতে রয়েছে।


0

সমর্থিত পাইথন ভার্সন

পাইথনের জেনটি উদ্ধৃত করার জন্য :

পঠনযোগ্যতা গণনা।

উদাহরণস্বরূপ, পাইথন 3.7 প্রবর্তিত ডেটা চশমা এবং পাইথন 3.8 প্রবর্তিত fstring =

পাইথন 3.7 এবং পাইথন 3.8 এ অন্যান্য বৈশিষ্ট্য থাকতে পারে যা আপনার কাছে গুরুত্বপূর্ণ। মুল বক্তব্যটি হ'ল পাইপি এই মুহুর্তে পাইথন 3.7 বা পাইথন 3.8 সমর্থন করে না।

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