API زبان C برای PyTime

اضافه شده در نسخه‌ی 3.13.

API ساعت در C دسترسی به ساعت‌های سیستمی را فراهم می‌کند. این API مشابه ماژول time پایتون است.

برای API زبان C مربوط به ماژول datetime، به شیءهای DateTime مراجعه کنید.

نوع‌ها

type PyTime_t

یک برچسب زمانی یا مدت‌زمان بر حسب نانوثانیه که به‌صورت یک عدد صحیح علامت‌دار ۶۴ بیتی نمایش داده می‌شود.

نقطه مرجع مهرهای زمانی به ساعت مورد استفاده بستگی دارد. برای مثال، PyTime_Time() مهرهای زمانی را نسبت به مبدأ زمان یونیکس برمی‌گرداند.

محدوده‌ی پشتیبانی‌شده حدود [-292.3 سال؛ +292.3 سال] است. با استفاده از مبدأ زمان یونیکس (۱ ژانویه ۱۹۷۰) به عنوان مرجع، محدوده‌ی تاریخ‌های پشتیبانی‌شده حدود [1677-09-21; 2262-04-11] است. حد‌های دقیق به صورت ثابت‌ها ارائه شده‌اند:

PyTime_t PyTime_MIN

کمترین مقدار PyTime_t.

PyTime_t PyTime_MAX

بیشینه مقدار PyTime_t.

توابع ساعت

توابع زیر یک اشاره‌گر به PyTime_t می‌گیرند که آن را به مقدار یک ساعت خاص تنظیم می‌کنند. جزئیات هر ساعت در مستندات تابع متناظر پایتون ارائه شده است.

این توابع در صورت موفقیت 0 و در صورت شکست -1 (همراه با استثنای تنظیم‌شده) برمی‌گردانند.

در صورت سرریز عدد صحیح، استثنای PyExc_OverflowError تنظیم می‌شود و *result به مقداری تنظیم می‌شود که به بازه‌ی [PyTime_MIN; PyTime_MAX] محدود شده است. (در سیستم‌های امروزی، سرریزهای عدد صحیح به احتمال زیاد ناشی از تنظیم نادرست زمان سیستم هستند.)

مانند هر API زبان C دیگری (مگر این‌که خلاف آن مشخص شده باشد)، این توابع باید با یک attached thread state فراخوانی شوند.

int PyTime_Monotonic(PyTime_t *result)

ساعت یکنواخت را بخوانید. برای جزئیات مهم درباره‌ی این ساعت به time.monotonic() مراجعه کنید.

int PyTime_PerfCounter(PyTime_t *result)

شمارنده‌ی عملکرد را بخوانید. برای جزئیات مهم درباره‌ی این ساعت، time.perf_counter() را ببینید.

int PyTime_Time(PyTime_t *result)

زمان «ساعت دیواری» را می‌خواند. برای جزئیات مهم درباره‌ی این ساعت، time.time() را ببینید.

توابع ساعت خام

مشابه توابع ساعت، اما در صورت خطا استثنا تنظیم نمی‌کنند و نیازی ندارند که فراخواننده وضعیت نخ متصل داشته باشد.

در صورت موفقیت، این توابع 0 را برمی‌گردانند.

در صورت شکست، آن‌ها *result را برابر 0 قرار می‌دهند و -1 را برمی‌گردانند، بدون تنظیم کردن استثنا. برای به دست آوردن علت خطا، یک وضعیت نخ را متصل کنید و تابع معمولی (غیر Raw) را فراخوانی کنید. توجه داشته باشید که تابع معمولی ممکن است پس از شکست تابع Raw موفق شود.

int PyTime_MonotonicRaw(PyTime_t *result)

مشابه PyTime_Monotonic() است، اما در صورت خطا استثنایی تنظیم نمی‌کند و نیازی به attached thread state ندارد.

int PyTime_PerfCounterRaw(PyTime_t *result)

مشابه PyTime_PerfCounter() است، اما در صورت خطا استثنایی تنظین نمی‌کند و نیازی به وضعیت نخ متصل ندارد.

int PyTime_TimeRaw(PyTime_t *result)

مشابه PyTime_Time() است، اما در صورت خطا استثنایی تنظیم نمی‌کند و به attached thread state نیازی ندارد.

توابع تبدیل

double PyTime_AsSecondsDouble(PyTime_t t)

یک مهر زمانی را به تعدادی ثانیه به‌صورت یک double در C تبدیل می‌کند.

تابع نمی‌تواند شکست بخورد، اما توجه داشته باشید که double برای مقادیر بزرگ دقت محدودی دارد.