ماژول threading

سلام.دوستان ماژول threading چی هستش و کاربردش چیه؟
مشکل بنده در درک این ماژول اینه که منظور از کلمه thread رو نمیفهمم. معنیش که میشه “نخ” و…
در مورد این اصطلاح میشه توضیح بدید. چندجا دیدمش ولی درک نکردم.
و این کد رو هم متوجه نمیشم دقیقا اون ماژول چی کار میکنه. ما اگه اون ماژول رو هم نزاریم داخل حلقه اگه تابع رو صدا بزنیم ۵ بار چاپ میکنه.
import threading

def worker():
    """thread worker function"""
    print 'Worker'
    return

threads = []
for i in range(5):
    t = threading.Thread(target=worker)
    threads.append(t)
    t.start()

جدا از این کد یک جا اینو نوشته بود
؛ برای انجام چندین کار مورد استفاده قرار میگیرد . هر کار میتواند دارای چندین thread باشد؛
thread یعنی چی متوجه نمیشم.

سلام دوست عزیز
بله معنی thread میشه نخ , توی زبان های برنامه نویسی کاربرد خاصی داره
هر وقت بخواهید که چند تا کار باهم انجام بشه باید از thread استفاده کنید توی حالت عادی شما وقتی کد اجرا می کنید یک کار شروع به انجام دادن میشه و به پایان میرسه حالا فکر کنید می خواهید چند تا کار باهم شروع به اجرا شدن شود آن وقت از thread استفاده می کنند

1 Like

ترجمش میشه همون نخ.
ولی اینطوری در نظر بگیرید که چندتا نخ داریم که بهش پراسس‌هامون رو آویزون کردیم و هر هسته‌ی cpu یکی از این نخ‌ها رو پردازش میکنه میره جلو.
البته دقیقا به این شکل نیست. من یه توضیح کلی دادم فقط.

و بجز بحث ترجمه‌ی لغوی، در دنیای کامپیوتر به «یک لیست از دستور‌العملهایی که کامپیوتر باید پردازش کنه»، thread گفته میشه.

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

توضیح multithreading خیلی زیاده. باید زیاد مطالعه کنید. pitfall های زیادی هم داره. مخصوصا وقتی با دیتاهای mutable کار میکنیم و state نرم‌افزارمون بین بخشهای مختلف share شده (وقتی که threadهای مختلف دیتاهای همدیگه رو میتونن عوض کنن و این باعث میشه کل سیستم غیر قابل پیش‌بینی عمل کنه)

روشهای زیادی هم برای multi-threading و async وجود داره. (async اینه که چندتا پردازش رو بندازیم روی یک هسته که به طور همزمان اجرا بشه)
باید زیاد مطالعه کنید درموردشون.

3 Likes