این تمرینها بر پایهی درس مفهوم GIL در پایتون هستند.
تمرین ۱ (مفهومی)
GIL چیست و چه کاری انجام میدهد؟ در هر لحظه چند ترد از یک پردازه اجرا میشود؟
تمرین ۲ (مفهومی)
چرا با وجود اینکه GIL تنها به یک ترد اجازهی اجرا در هر لحظه میدهد، استفاده از چند ترد در پایتون هنوز میتواند ارزشمند باشد؟ با مثال دانلود منیجر توضیح دهید.
تمرین ۳ (مفهومی)
چرا حتی با وجود GIL، برای عملیاتی مثل افزایش مقدار یک متغیر مشترک، هنوز هم به قفل نیاز داریم؟
تمرین ۴ (مفهومی)
چرا سازندگان پایتون GIL را ایجاد کردند، و چرا غیرفعالکردن آن خطرناک تلقی میشود؟
تمرین ۵ (مفهومی)
تفاوت کار «I/O-bound» و «CPU-bound» چیست؟ برای هرکدام از threading یا multiprocessing کدام مناسبتر است و چرا؟
تمرین ۶ (کد)
کدی بنویسید که چهار کار I/O-bound (شبیهسازیشده با sleep [2]) را با تردها همزمان اجرا کند و زمان کل را چاپ کند. انتظار دارید چند ثانیه طول بکشد؟
تمرین ۷ (کد)
یک کار CPU-bound (مثل جمعزدن یک بازهی بزرگ) را که با تردها سریعتر نمیشود، با multiprocessing بهصورت موازی اجرا کنید.