Rodrigo Girão Serrão در مقالهای دربارهٔ iteratorهای thread-safe، مسئلهٔ استفادهٔ مشترک از یک iterator میان چند thread را بررسی میکند. او threading.serialize_iterator و threading.synchronized_iterator را بهعنوان ابزارهای جدید Python 3.15 برای این کار نام میبرد؛ بااینحال، بخش موجود از مقاله فقط مثال مسئله را نشان میدهد و به نحوهٔ استفاده از این ابزارها نمیرسد.
نکتهٔ اصلی این است که بیشتر iteratorها بهصورت پیشفرض thread-safe نیستند. نویسنده برای نمایش این موضوع، یک generator به نام slow_counter تعریف میکند که پیش از تولید هر عدد، با time.sleep(1) یک ثانیه صبر میکند. سپس تابع count_consumer با next(counter) تلاش میکند مقدار بعدی را از همان generator بگیرد و در صورت بروز ValueError، خطا را نمایش میدهد.
این تابع در دو thread جدا اجرا میشود. هدف این است که thread دوم زمانی مقدار بعدی را درخواست کند که thread اول هنوز منتظر آمادهشدن نتیجه است. طبق توضیح مقاله، این دسترسی همزمان باعث ValueError در thread دوم میشود. بنابراین، اشتراک یک generator میان چند thread را نباید بهخودیخود thread-safe فرض کرد؛ حتی اگر هر مصرفکننده فقط یک بار next را فراخوانی کند.


