GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • فهرست مطالب
  • resource --- اطلاعات مصرف منابع
  • fcntl --- فراخوانی‌های سیستمی fcntl و ioctl
  • syslog --- روال‌های کتابخانه‌ای syslog یونیکس
  • گزارش یک اشکال
  • بهبود این صفحه
  • نمایش منبع
  • نمایش منبع ترجمه
  • اندیس
  • ماژول‌ها
  • Python
  • 3.15.2 documentation
  • کتابخانه‌ی استاندارد پایتون
  • خدمات مختص یونیکس

This view

  • Original page
  • New address

GeezerVison is showing python.github.io — resource --- اطلاعات مصرف منابع

resource --- اطلاعات مصرف منابع¶


این ماژول سازوکارهای پایه‌ای را برای اندازه‌گیری و کنترل منابع سیستمی که توسط یک برنامه استفاده می‌شوند، فراهم می‌کند.

دسترس‌پذیری: Unix, not WASI.

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

در صورت شکست فراخوانی سیستمی، استثنای OSError پرتاب می‌شود.

exception resource.error¶

یک نام مستعار منسوخ از OSError.

تغییر یافته در نسخه‌ی 3.3: پیرو PEP 3151، این کلاس به نام مستعار OSError تبدیل شد.

محدودیت‌های منابع¶

مصرف منابع می‌تواند با استفاده از تابع setrlimit() که در ادامه توضیح داده شده است، محدود شود. هر منبع با یک جفت حد کنترل می‌شود: یک حد نرم و یک حد سخت. حد نرم، حد فعلی است و ممکن است در طول زمان توسط یک فرایند کاهش یا افزایش یابد. حد نرم هرگز نمی‌تواند از حد سخت فراتر رود. حد سخت می‌تواند به هر مقداری که بزرگ‌تر از حد نرم باشد کاهش یابد، اما نمی‌تواند افزایش یابد. (تنها فرایندهایی که UID مؤثر ابرکاربر را دارند، می‌توانند یک حد سخت را افزایش دهند.)

منابع خاصی که می‌توانند محدود شوند، به سیستم وابسته‌اند. این منابع در صفحه راهنمای getrlimit(2) توضیح داده شده‌اند. منابع فهرست‌شده در زیر زمانی پشتیبانی می‌شوند که سیستم‌عامل زیربنایی از آن‌ها پشتیبانی کند؛ منابعی که سیستم‌عامل نمی‌تواند آن‌ها را بررسی یا کنترل کند، در این ماژول برای آن پلتفرم‌ها تعریف نشده‌اند.

resource.RLIM_INFINITY¶

ثابتی که برای نشان دادن محدودیت یک منبع نامحدود استفاده می‌شود.

تغییر یافته در نسخه‌ی 3.15: اکنون همیشه مثبت است. پیش از این، می‌توانست منفی باشد، مانند ۱- یا ۳-.

resource.RLIM_SAVED_CUR¶
resource.RLIM_SAVED_MAX¶

ثابت‌هایی که برای نشان دادن مقادیر حد نرم و سخت استفاده می‌شوند، در صورتی که نتوان آن‌ها را در مقدار rlim_t در زبان C نشان داد. می‌تواند برابر با RLIM_INFINITY باشد.

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

resource.getrlimit(resource)¶

یک تاپل (soft, hard) شامل محدودیت‌های نرم و سخت فعلی برای resource برمی‌گرداند. اگر منبع نامعتبری تعیین شده باشد، ValueError پرتاب می‌کند، یا اگر فراخوانی سیستمی زیربنایی به‌طور غیرمنتظره‌ای شکست بخورد، error پرتاب می‌کند.

resource.setrlimit(resource, limits)¶

محدودیت‌های جدید مصرف resource را تنظیم می‌کند. آرگومان limits باید یک تاپل (soft, hard) شامل ۲ عدد صحیح باشد که محدودیت‌های جدید را توصیف می‌کند. می‌توان از مقدار RLIM_INFINITY برای درخواست محدودیتی نامحدود استفاده کرد.

اگر منبع نامعتبری مشخص شود، اگر محدودیت نرم جدید از محدودیت سخت فراتر رود، یا اگر فرایندی سعی کند محدودیت سخت خود را افزایش دهد، ValueError پرتاب می‌شود. مشخص کردن محدودیت با مقدار RLIM_INFINITY در حالی که محدودیت سخت یا محدودیت سیستم برای آن منبع نامحدود نباشد، باعث پرتاب ValueError می‌شود. فرایندی با UID مؤثر ابرکاربر می‌تواند هر مقدار معتبری برای محدودیت، از جمله نامحدود، درخواست کند، اما اگر محدودیت درخواستی از محدودیت اعمال‌شده از سوی سیستم فراتر رود، همچنان ValueError پرتاب می‌شود.

همچنین ممکن است setrlimit در صورت شکست خوردن فراخوانی سیستمی زیربنایی، error را پرتاب کند.

VxWorks فقط از تنظیم RLIMIT_NOFILE پشتیبانی می‌کند.

یک رویداد حسابرسی resource.setrlimit را با آرگومان‌های resource و limits پرتاب می‌کند.

resource.prlimit(pid, resource[, limits])¶

setrlimit() و getrlimit() را در یک تابع ترکیب می‌کند و امکان دریافت و تنظیم محدودیت‌های منابع یک فرایند دلخواه را فراهم می‌سازد. اگر pid برابر ۰ باشد، این فراخوانی به فرایند جاری اعمال می‌شود. resource و limits همان معنایی را دارند که در setrlimit() دارند، با این تفاوت که limits اختیاری است.

هنگامی که limits داده نشود، تابع محدودیت منبع فرایند pid را برمی‌گرداند. هنگامی که limits داده شود، محدودیت منبع فرایند تنظیم می‌شود و محدودیت منبع پیشین برگردانده می‌شود.

ProcessLookupError را هنگامی که pid یافت نشود و PermissionError را هنگامی که کاربر CAP_SYS_RESOURCE برای فرایند نداشته باشد، پرتاب می‌کند.

یک رویداد حسابرسی resource.prlimit را با آرگومان‌های pid، resource و limits پرتاب می‌کند.

دسترس‌پذیری: Linux >= 2.6.36 with glibc >= 2.13.

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

این نمادها منابعی را تعریف می‌کنند که مصرف آن‌ها را می‌توان با استفاده از توابع setrlimit() و getrlimit() که در ادامه توضیح داده شده‌اند، کنترل کرد. مقادیر این نمادها دقیقاً همان ثابت‌هایی هستند که برنامه‌های C از آن‌ها استفاده می‌کنند.

صفحه راهنمای یونیکس برای getrlimit(2) منابع موجود را فهرست می‌کند. توجه داشته باشید که تمام سیستم‌ها از نماد یا مقدار یکسانی برای نشان دادن یک منبع یکسان استفاده نمی‌کنند. این ماژول تلاش نمی‌کند تفاوت‌های سکو را بپوشاند --- نمادهایی که برای یک سکو تعریف نشده‌اند، در آن سکو از این ماژول در دسترس نخواهند بود.

resource.RLIMIT_CORE¶

حداکثر اندازه‌ی پرونده core (بر حسب بایت) که فرایند جاری می‌تواند ایجاد کند. این موضوع ممکن است منجر به ایجاد یک پرونده core ناقص شود، در صورتی که برای دربرگرفتن کل تصویر فرایند به core بزرگ‌تری نیاز باشد.

resource.RLIMIT_CPU¶

حداکثر مقدار زمان پردازنده (بر حسب ثانیه) که یک فرایند می‌تواند از آن استفاده کند. در صورت عبور از این محدودیت، یک سیگنال SIGXCPU به فرایند ارسال می‌شود. (برای اطلاعات در مورد نحوه‌ی دریافت این سیگنال و انجام کاری مفید، مثلاً تخلیه‌ی پرونده‌های باز روی دیسک، مستندات ماژول signal را ببینید.)

resource.RLIMIT_FSIZE¶

حداکثر اندازه‌ی پرونده‌ای که فرایند می‌تواند ایجاد کند.

resource.RLIMIT_DATA¶

حداکثر اندازه‌ی انباشت فرایند (به بایت)

resource.RLIMIT_STACK¶

حداکثر اندازه‌ی پشته‌ی فراخوانی برای فرایند جاری (بر حسب بایت). این فقط بر پشته‌ی نخ اصلی در یک فرایند چندنخی تأثیر می‌گذارد.

resource.RLIMIT_RSS¶

حداکثر اندازه‌ی مجموعه مقیم (resident set size) که باید در دسترس فرایند قرار گیرد.

resource.RLIMIT_NPROC¶

حداکثر تعداد فرایندهایی که فرایند جاری می‌تواند ایجاد کند.

resource.RLIMIT_NOFILE¶

حداکثر تعداد توصیف‌گرهای پرونده باز برای فرایند جاری.

resource.RLIMIT_OFILE¶

نام BSD برای RLIMIT_NOFILE.

resource.RLIMIT_MEMLOCK¶

حداکثر فضای آدرسی که می‌تواند در حافظه قفل شود.

resource.RLIMIT_VMEM¶

بزرگ‌ترین ناحیه‌ی حافظه‌ی نگاشت‌شده که فرایند ممکن است اشغال کند. معمولاً نام مستعاری از RLIMIT_AS است.

دسترس‌پذیری: Solaris, FreeBSD, NetBSD.

resource.RLIMIT_AS¶

حداکثر ناحیه (به بایت) از فضای آدرس که ممکن است توسط فرایند اشغال شود.

resource.RLIMIT_MSGQUEUE¶

تعداد بایت‌هایی که می‌توان برای صف‌های پیام POSIX تخصیص داد.

دسترس‌پذیری: Linux >= 2.6.8.

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

resource.RLIMIT_NICE¶

سقف سطح nice فرایند (که به‌صورت 20 - rlim_cur محاسبه می‌شود).

دسترس‌پذیری: Linux >= 2.6.12.

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

resource.RLIMIT_RTPRIO¶

سقف اولویت بی‌درنگ.

دسترس‌پذیری: Linux >= 2.6.12.

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

resource.RLIMIT_RTTIME¶

محدودیت زمانی (بر حسب میکروثانیه) برای زمان پردازنده‌ای که یک فرایند می‌تواند تحت زمان‌بندی بلادرنگ بدون انجام یک فراخوانی سیستمی مسدودکننده صرف کند.

دسترس‌پذیری: Linux >= 2.6.25.

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

resource.RLIMIT_SIGPENDING¶

تعداد سیگنال‌هایی که فرایند می‌تواند در صف قرار دهد.

دسترس‌پذیری: Linux >= 2.6.8.

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

resource.RLIMIT_SBSIZE¶

حداکثر اندازه‌ی مصرف بافر سوکت (به بایت) برای این کاربر. این میزان حافظه شبکه، و در نتیجه میزان mbufها (mbufs)، را که این کاربر ممکن است در هر زمان در اختیار داشته باشد محدود می‌کند.

دسترس‌پذیری: FreeBSD, NetBSD.

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

resource.RLIMIT_SWAP¶

حداکثر اندازه (به بایت) فضای مبادله‌ای که ممکن است تمام فرآیندهای این شناسه کاربری آن را رزرو یا استفاده کنند. این محدودیت تنها در صورتی اعمال می‌شود که بیت ۱ از sysctlِ vm.overcommit تنظیم شده باشد. لطفاً برای توضیح کامل این sysctl، tuning(7) را ببینید.

دسترس‌پذیری: FreeBSD >= 8.

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

resource.RLIMIT_NPTS¶

حداکثر تعداد شبه‌پایانه‌ها (pseudo-terminals) که توسط این شناسه کاربری ایجاد شده‌اند.

دسترس‌پذیری: FreeBSD >= 8.

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

resource.RLIMIT_KQUEUES¶

حداکثر تعداد kqueueهایی که این شناسه کاربری مجاز به ایجاد آن‌ها است.

دسترس‌پذیری: FreeBSD >= 11.

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

resource.RLIMIT_NTHR¶

حداکثر تعداد نخ‌ها برای این شناسه کاربری، بدون احتساب نخ‌های اصلی و هسته.

دسترس‌پذیری: NetBSD >= 7.0.

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

resource.RLIMIT_PIPEBUF¶

حداکثر اندازه‌ی کل بافرهای درون‌هسته‌ای برای پایپ‌ها/فایفوهای دوسویه که این شناسه‌ی کاربری مجاز به مصرف آن‌ها است.

دسترس‌پذیری: FreeBSD >= 14.2.

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

resource.RLIMIT_THREADS¶

حداکثر تعداد نخ‌هایی که هر فرایند می‌تواند ایجاد کند.

دسترس‌پذیری: AIX.

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

resource.RLIMIT_UMTXP¶

حد تعداد اشیای کتابخانه‌ی نخ Posix که بین فرایندها به اشتراک گذاشته شده‌اند و توسط شناسه‌ی کاربری تخصیص داده می‌شوند.

دسترس‌پذیری: FreeBSD >= 11.

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

استفاده از منابع¶

این توابع برای بازیابی اطلاعات استفاده از منابع به کار می‌روند:

resource.getrusage(who)¶

این تابع شیءای را برمی‌گرداند که منابع مصرف‌شده توسط فرایند جاری یا فرایندهای فرزند آن را توصیف می‌کند، همان‌طور که با پارامتر who مشخص شده است. پارامتر who باید با استفاده از یکی از ثابت‌های RUSAGE_* که در ادامه توضیح داده شده‌اند، مشخص شود.

یک مثال ساده:

from resource import *
import time

# a non CPU-bound task
time.sleep(3)
print(getrusage(RUSAGE_SELF))

# a CPU-bound task
for i in range(10 ** 8):
   _ = 1 + 1
print(getrusage(RUSAGE_SELF))

هر یک از فیلدهای مقدار بازگشتی، نحوه استفاده از یک منبع سیستمی خاص را توصیف می‌کنند، برای مثال میزان زمانی که در حالت کاربر صرف اجرا شده یا تعداد دفعاتی که فرایند از حافظه اصلی خارجشده است. برخی مقادیر به بازه تیک ساعت وابسته‌اند، برای مثال میزان حافظه‌ای که فرایند در حال استفاده از آن است.

برای سازگاری با نسخه‌های پیشین، مقدار بازگشتی همچنین به‌صورت تاپلی از ۱۶ المان قابل دسترسی است.

فیلدهای ru_utime و ru_stime از مقدار بازگشتی، مقادیر ممیز شناور هستند که به‌ترتیب نشان‌دهنده‌ی میزان زمان صرف‌شده برای اجرا در حالت کاربر و میزان زمان صرف‌شده برای اجرا در حالت سیستم هستند. مقادیر باقی‌مانده، اعداد صحیح هستند. برای اطلاعات تفصیلی درباره‌ی این مقادیر به صفحه راهنمای getrusage(2) مراجعه کنید. خلاصه‌ای کوتاه در اینجا ارائه شده است:

اندیس

فیلد

منبع

0

ru_utime

زمان در حالت کاربر (ثانیه‌های شناور)

1

ru_stime

زمان در حالت سیستم (ثانیه به‌صورت float)

2

ru_maxrss

حداکثر اندازه مجموعه مقیم

3

ru_ixrss

اندازه‌ی حافظه‌ی مشترک

4

ru_idrss

اندازه‌ی حافظه‌ی غیرمشترک

5

ru_isrss

اندازه‌ی پشته‌ی اشتراک‌گذاری‌نشده

6

ru_minflt

خطاهای صفحه بدون نیاز به ورودی/خروجی

7

ru_majflt

خطاهای صفحه نیازمند I/O

8

ru_nswap

تعداد خروج‌های مبادله

9

ru_inblock

عملیات‌های ورودی بلوک

10

ru_oublock

عملیات‌های خروجی بلوک

11

ru_msgsnd

پیام‌های ارسال‌شده

12

ru_msgrcv

پیام‌های دریافتی

13

ru_nsignals

سیگنال‌های دریافت‌شده

14

ru_nvcsw

تعویض‌های زمینه داوطلبانه

15

ru_nivcsw

تعویض‌های غیرارادی زمینه

این تابع در صورت مشخص شدن یک پارامتر who نامعتبر، یک ValueError را پرتاب می‌کند. همچنین ممکن است در شرایط غیرمعمول، استثنای error را نیز پرتاب کند.

resource.getpagesize()¶

تعداد بایت‌های یک صفحه‌ی سیستم را برمی‌گرداند. (این مقدار لزوماً برابر با اندازه‌ی صفحه‌ی سخت‌افزاری نیست.)

نمادهای RUSAGE_* زیر به تابع getrusage() داده می‌شوند تا مشخص کنند اطلاعات کدام فرایندها باید ارائه شود.

resource.RUSAGE_SELF¶

آن را به getrusage() ارسال کنید تا منابع مصرف‌شده توسط فرایند فراخوان درخواست شود، که مجموع منابع استفاده‌شده توسط همه نخ‌های درون فرایند است.

resource.RUSAGE_CHILDREN¶

به getrusage() بفرستید تا منابع مصرف‌شده توسط فرایندهای فرزند فرایند فراخوان، که پایان‌یافته‌اند و انتظارشان کشیده شده است، درخواست شود.

resource.RUSAGE_BOTH¶

به getrusage() ارسال کنید تا منابع مصرف‌شده توسط فرآیند فعلی و فرآیندهای فرزند درخواست شود. ممکن است در همه‌ی سیستم‌ها در دسترس نباشد.

resource.RUSAGE_THREAD¶

برای درخواست منابع مصرف‌شده توسط نخ جاری، آن را به getrusage() بدهید. ممکن است در همه‌ی سیستم‌ها در دسترس نباشد.

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

© حق نشر 2001 Python Software Foundation.
این صفحه تحت مجوز بنیاد نرم‌افزار پایتون نسخه ۲ منتشر شده است.
مثال‌ها، دستورالعمل‌ها، و سایر کدهای موجود در مستندات همچنین تحت مجوز بدون بند BSD منتشر شده‌اند.
برای اطلاعات بیشتر به تاریخچه و مجوز مراجعه کنید.

بنیاد نرم‌افزار پایتون یک شرکت غیرانتفاعی است. لطفاً کمک مالی کنید.

آخرین به‌روزرسانی در نوامبر 12, 2026 (06:19 UTC). آیا اشکالی یافتید؟
ساخته شده با Sphinx 9.1.0.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.