অজগরের% টাইমিট কি?


96

সময়টি গণনার জন্য আমি সর্বদা কোডটি পড়ি:

%timeit function()

আপনি এখানে "%" এর অর্থ ব্যাখ্যা করতে পারেন?

আমি মনে করি, "%" সর্বদা স্ট্রিংয়ের কিছু প্রতিস্থাপন করতে ব্যবহৃত হয়, যেমন% s এর অর্থ একটি স্ট্রিং প্রতিস্থাপন করা হয়,% d একটি ডেটা প্রতিস্থাপন করে তবে এই ক্ষেত্রেটি সম্পর্কে আমার কোনও ধারণা নেই।


16
এটি আইপথনের একটি ম্যাজিক কমান্ড। দেখুন: আইপিথন ম্যাজিক্স
মিস্টার অ্যালেক্সবাইল

উত্তর:


91

%timeitএকটি আইপথন ম্যাজিক ফাংশন, যা নির্দিষ্ট কোডের একটি সময় (একক প্রয়োগের বিবৃতি, বা একটি একক পদ্ধতি) ব্যবহার করতে ব্যবহৃত হতে পারে।

ডক্স থেকে:

সময়কাল

Time execution of a Python statement or expression

Usage, in line mode:
    %timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] statement

এটি ব্যবহার করার জন্য, উদাহরণস্বরূপ, যদি আমরা ব্যবহারের xrangeচেয়ে কোনও দ্রুত ব্যবহার করা হয় কিনা তা অনুসন্ধান করতে চাই range, আপনি কেবল তা করতে পারেন:

In [1]: %timeit for _ in range(1000): True
10000 loops, best of 3: 37.8 µs per loop

In [2]: %timeit for _ in xrange(1000): True
10000 loops, best of 3: 29.6 µs per loop

এবং আপনি তাদের জন্য সময় পাবেন।

এর প্রধান সুবিধা হ'ল %timeit:

  • আপনাকে স্ট্যান্ডার্ড লাইব্রেরি থেকে আমদানি করতে হবে না , এবং আরও ভাল পদ্ধতির বিষয়টি খুঁজে বের করার জন্য কোডটি একাধিকবার চালাতে হবে।timeit.timeit

  • % টাইমিট স্বয়ংক্রিয়ভাবে মোট 2 সেকেন্ডের এক্সিকিউশন উইন্ডোর ভিত্তিতে আপনার কোডের জন্য প্রয়োজনীয় রানের সংখ্যা গণনা করবে।

  • timeit.timeitসময়সীমার সাথে অন্য পরিবেশে নির্মিত ভেরিয়েবলটি তৈরির ক্ষেত্রে পুরো কোড স্নিপেটকে ছাড়াই আপনি বর্তমান কনসোল ভেরিয়েবলগুলি ব্যবহার করতে পারেন ।


4
আইপথন শেল থেকে কোনও ম্যাক্রো বা লাইনের সেট সেট করার কোনও উপায় আছে?
alpha_989

4
@ alpha_989 হ্যাঁ, আপনি কোনও ফাংশনের মধ্যে লাইনগুলির সেই সেটগুলি মোড়ানো করতে পারেন, এবং তারপরে ফাংশনটির মতো:%timeit function()
মি 無

@ মূ 無: দয়া করে স্পষ্ট করে বলুন timer.timeit- এটি কি আসল মডিউলটির নাম?
ফাউন্টেনহেড


আউটপুটটি 10000 loops, best of 3: 29.6 µs per loopব্যাখ্যা করা যেতে পারে: (১.) এক্সপ্রেশনটি মোট সময় (২.) পেতে 10000 বার চালানো হয় তারপরে "সময় প্রতি লুপ" পেতে মোট সময়কে 10000 দ্বারা বিভক্ত করা হয় এবং (3.) মোট সময় গণনা করা হয় মোট 3 বারের 3 বার এবং অবশেষে (4.), সর্বনিম্ন মোট সময় (আউট "3 এর মধ্যে সেরা") আউটপুট হিসাবে ব্যবহৃত হয়। আমার ব্যাখ্যা সঠিক, হ্যাঁ / না?
ট্রেভর বয়েড স্মিথ

37

এটি আইপ্যাথনে একটি লাইন ম্যাজিক হিসাবে পরিচিত । এগুলি অনন্য যে তাদের যুক্তিগুলি কেবলমাত্র বর্তমান লাইনের শেষ পর্যন্ত প্রসারিত এবং যাদুকরগুলি সত্যই কমান্ড লাইন বিকাশের জন্য কাঠামোগত। timeitকোড প্রয়োগের সময় ব্যবহৃত হয়।

আপনি যে ম্যাজিকগুলি ব্যবহার করতে পারেন তার সবকটি দেখতে চাইলে আপনি কেবল টাইপ করতে পারেন:

%lsmagic

উভয় লাইন যাদু এবং সেল যাদুবিদ্যার একটি তালিকা পেতে।

ডকুমেন্টেশন থেকে আরও কিছু যাদু তথ্য এখানে :

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

আপনি লাইন বা সেল মোডে রয়েছেন তার উপর নির্ভর করে , ব্যবহারের দুটি ভিন্ন উপায় রয়েছে %timeit। আপনার প্রশ্ন প্রথম উপায় চিত্রিত:

In [1]: %timeit range(100)

বনাম

In [1]: %%timeit 
      : x = range(100)
      :

4

আইপিথন সেগুলি বাধা দেয়, এগুলিকে বিল্ট-ইন ম্যাজিক কমান্ড বলা হয়, এখানে তালিকা রয়েছে: https://ipython.org/ipython-doc/dev/interactive/magics.html

আপনি নিজের কাস্টম জাদুগুলিও তৈরি করতে পারেন, https://ipython.org/ipython-doc/dev/config/custommagics.html

আপনার timeitএখানে https://ipython.org/ipython-doc/dev/interactive/magics.html#magic-timeit


2

আমি মিউ দ্বারা উত্তর দেওয়ার জন্য% টাইমাইট ব্যবহারের আরও একটি দরকারী সুবিধা যুক্ত করতে চাইযে:

  • আপনি বর্তমান কনসোল ভেরিয়েবল ব্যবহার করতে পারেন পরিবর্তনশীল যে একটি অন্য পরিবেশের সালে নির্মিত হয় যে timeit কাজ করে তৈরী timeit.timeit ক্ষেত্রে পুরো কোড স্নিপেট ক্ষণস্থায়ী ছাড়া।

পিএস: আমি জানি এটি উপরের উত্তর দেওয়ার জন্য একটি মন্তব্য হওয়া উচিত তবে বর্তমানে এটির জন্য আমার যথেষ্ট খ্যাতি নেই, আশা করি আমি যা লিখি তা কারও পক্ষে সহায়ক হবে এবং পরের বার মন্তব্য করার জন্য যথেষ্ট খ্যাতি অর্জনে সহায়তা করবে।


4
এটিকে উন্নত করতে আপনি অন্য কারও উত্তরও সম্পাদনা করতে পারেন। এর জন্য আপনার ইতিমধ্যে যথেষ্ট খ্যাতি থাকা উচিত
টারিক ওয়েলিং

ধন্যবাদ জানতেন না। @ তারিকওয়েলিং
অঙ্কিত

2

আমি মাত্র %% টাইমিটের খুব সূক্ষ্ম বিন্দু যুক্ত করতে চেয়েছিলাম । এটি সেলটিতে "ম্যাজিকস" চালায় , আপনি ত্রুটি পাবেন ...

ব্যবহারের ত্রুটি: লাইন যাদু ফাংশন %%timeitপাওয়া যায় নি

... যদি %% টাইমাইটের উপরে কোনও কোড / মন্তব্য লাইন থাকে। অন্য কথায়, নিশ্চিত করুন যে %% টাইমিটটি আপনার ঘরের প্রথম কমান্ড।

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


4
এটি কেবল আইপিথন শেলটিতে প্রযোজ্য নয়, কেবলমাত্র একটি বৃহত্তর নোটবুকে
স্নাকচেচারবারব

0

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

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