کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش multi-threading در پایتون


آموزش چند رشته ای (multi-threading) در برنامه نویسی Python


رشته کردن (Threading) روشی است برای جدا کردن وظایفی که از لحاظ ترتیبی به هم وابسته نیستند. از رشته ها می توان برای بهبود پاسخگویی برنامه هایی استفاده کرد که در حالی که سایر وظایف در پس زمینه(background) در حال اجرا هستند، ورودی کاربران را دریافت می کند. یکی از کاربرد های مرتبط، اجرای وظایف ورودی و خروجی به موازات اجرای محاسبات در یک رشته دیگر است.

کد زیر نشان میدهد ماژول سطح بالای threading چگونه می تواند وظایف را در پس زمینه اجرا کند، در حالی که برنامه اصلی به اجرا ادامه می دهد.


    import threading, zipfile

    class AsyncZip(threading.Thread):
        def __init__(self, infile, outfile):
            threading.Thread.__init__(self)
            self.infile = infile
            self.outfile = outfile
    
        def run(self):
            f = zipfile.ZipFile(self.outfile, 'w', zipfile.ZIP_DEFLATED)
            f.write(self.infile)
            f.close()
            print('Finished background zip of:', self.infile)
    
    background = AsyncZip('mydata.txt', 'myarchive.zip')
    background.start()
    print('The main program continues to run in foreground.')
    
    background.join()    # Wait for the background task to finish
    print('Main program waited until background was done.')


چالش اصلی در برنامه های کاربردی چند رشته ای، هماهنگی رشته هایی است که داده یا سایر منابع را به اشتراک می گذارند. با این هدف، ماژول threading تعدادی امکانات همگام سازی از جمله قفل ها(locks)، رویداد ها(events)، متغیر های شرطی و سمافور ها(semaphores) را ارائه می کند.

با وجود قدرتمند بودن آن ابزار ها، خطاهای کوچک طراحی، می تواند منجر به بروز مشکلاتی شود که تولید دوباره آن را با مشکل مواجه کند. بنابراین، راهکار مورد نظر برای همگام سازی وظایف این است که روی تمامی دسترسی های یک رشته خاص به یک منبع، تمرکز کنیم و سپس با استفاده از ماژول queue ، آن رشته خاص را با درخواست ها از سایر رشته ها تغذیه کنیم. برنامه های کاربردی که از اشیای Queue برای ارتباطات بین رشته ای (inter-thread) و همگام سازی استفاده می کنند، برای طراحی ساده تر، خوانا تر و قابل اطمینان تر هستند.

1403/05/31 3250 609
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...