در این مطلب، ویدئو Threading vs Multiprocessing در Python – Python 15 پیشرفته – آموزش برنامه نویسی با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:14:47
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,030 –> 00:00:02,790
سلام به همگی به یک آموزش جدید پایتون خوش آمدید،
2
00:00:02,790 –> 00:00:04,650
امروز در مورد
3
00:00:04,650 –> 00:00:07,080
threading و multiprocessing در پایتون صحبت خواهیم کرد،
4
00:00:07,080 –> 00:00:09,660
بنابراین با Threading و Multiprocessing
5
00:00:09,660 –> 00:00:12,000
می توانید کد را به صورت موازی اجرا
6
00:00:12,000 –> 00:00:14,549
کنید و کد خود را سرعت بخشید و در این آموزش
7
00:00:14,549 –> 00:00:15,870
خواهیم فهمید که تفاوت
8
00:00:15,870 –> 00:00:18,210
بین آنها چیست. یک فرآیند و یک تهدید
9
00:00:18,210 –> 00:00:21,119
مزایا و معایب هر دو نحوه
10
00:00:21,119 –> 00:00:23,310
و چرایی محدود شدن تهدیدات توسط Gil
11
00:00:23,310 –> 00:00:25,500
و اینکه چگونه میتوانیم به راحتی از
12
00:00:25,500 –> 00:00:28,289
ماژول threading و چند پردازشی داخلی برای
13
00:00:28,289 –> 00:00:30,150
ایجاد و اجرای چندین تهدید یا
14
00:00:30,150 –> 00:00:33,030
فرآیند استفاده کنیم، بنابراین اجازه دهید با تفاوت بین شروع کنیم.
15
00:00:33,030 –> 00:00:35,160
یک فرآیند و یک
16
00:00:35,160 –> 00:00:38,399
تهدید، بنابراین یک فرآیند نمونهای از یک
17
00:00:38,399 –> 00:00:40,890
برنامه است، به عنوان مثال اگر من
18
00:00:40,890 –> 00:00:43,500
یک مرورگر فایرفاکس را اجرا میکنم، این یک
19
00:00:43,500 –> 00:00:46,440
فرآیند است یا اگر من یک مفسر پایتون را اجرا میکنم،
20
00:00:46,440 –> 00:00:49,010
این یک فرآیند و
21
00:00:49,010 –> 00:00:52,649
یک تهدید از سوی دیگر است. hand موجودیتی
22
00:00:52,649 –> 00:00:55,949
در یک فرآیند است، بنابراین یک فرآیند میتواند
23
00:00:55,949 –> 00:01:00,930
چندین تهدید در داخل فرآیندها داشته باشد و
24
00:01:00,930 –> 00:01:04,650
از چندین CPU و هسته استفاده کند، بنابراین
25
00:01:04,650 –> 00:01:09,240
میتوانید کد خود را روی چندین
26
00:01:09,240 –> 00:01:12,720
CPU به صورت موازی اجرا کنید. ses یک
27
00:01:12,720 –> 00:01:15,299
فضای حافظه مجزا دارند، بنابراین حافظه
28
00:01:15,299 –> 00:01:18,360
مشترک نیست، بلکه بین پردازشها به اشتراک گذاشته میشود و
29
00:01:18,360 –> 00:01:21,630
برای پردازش محدود به CPU عالی هستند، بنابراین به
30
00:01:21,630 –> 00:01:25,049
این معنی است
31
00:01:25,049 –> 00:01:27,780
که اگر حجم زیادی داده دارید و
32
00:01:27,780 –> 00:01:30,509
مجبور هستید محاسبات گران زیادی را برای آنها انجام دهید، به این معنی است که اگر مجبور باشید این کار را انجام دهید.
33
00:01:30,509 –> 00:01:34,110
سپس با چند پردازش می
34
00:01:34,110 –> 00:01:37,380
توانید داده ها را در CPU های مختلف پردازش کنید
35
00:01:37,380 –> 00:01:41,759
و به این ترتیب سرعت کد خود را افزایش دهید یک
36
00:01:41,759 –> 00:01:47,250
فرآیند جدید به طور مستقل
37
00:01:47,250 –> 00:01:49,799
شروع می شود و مستقل از سایر
38
00:01:49,799 –> 00:01:52,860
فرآیندها شروع می شود و فرآیندها به راحتی
39
00:01:52,860 –> 00:01:56,159
قطع می شوند و قابل
40
00:01:56,159 –> 00:01:59,219
کشتن هستند و برای هر فرآیند یک کشتن وجود دارد بنابراین از Gil جلوگیری می شود.
41
00:01:59,219 –> 00:02:02,549
محدودیت و
42
00:02:02,549 –> 00:02:05,549
در عرض یک ثانیه به قفل مفسر Gil یا جهانی میرسم،
43
00:02:05,549 –> 00:02:10,729
حالا معایبی وجود دارد که
44
00:02:10,729 –> 00:02:13,860
فرآیند سنگین وزن است، بنابراین
45
00:02:13,860 –> 00:02:17,220
بیشتر تخمگذاری میشود، حافظه زیادی میگیرد و
46
00:02:17,220 –> 00:02:19,710
شروع یک فرآیند کندتر از
47
00:02:19,710 –> 00:02:23,310
شروع یک تهدید است و از آنجایی که فرآیندها
48
00:02:23,310 –> 00:02:26,940
دارای حافظه جداگانه هستند. فضای
49
00:02:26,940 –> 00:02:31,050
اشتراک گذاری حافظه چندان آسان نیست، بنابراین به اصطلاح
50
00:02:31,050 –> 00:02:33,840
ارتباطات بین فرآیندی
51
00:02:33,840 –> 00:02:38,210
پیچیده تر است و اکنون از سوی دیگر
52
00:02:38,210 –> 00:02:42,420
تهدیدات من گفتم یک تهدید
53
00:02:42,420 –> 00:02:44,850
موجودی در فرآیند است که می تواند
54
00:02:44,850 –> 00:02:47,730
برای اجرا برنامه ریزی شود و همچنین
55
00:02:47,730 –> 00:02:51,060
به عنوان یک فرآیند سبک وزن شناخته می شود و یک
56
00:02:51,060 –> 00:02:55,020
فرآیند می تواند چندین تهدید ایجاد کند، بنابراین
57
00:02:55,020 –> 00:02:57,239
همه تهدیدهای درون فرآیند
58
00:02:57,239 –> 00:03:00,480
حافظه یکسانی دارند و سبک وزن هستند، بنابراین
59
00:03:00,480 –> 00:03:02,250
شروع یک تهدید است. سریعتر از
60
00:03:02,250 –> 00:03:05,430
شروع یک فرآیند هستند و
61
00:03:05,430 –> 00:03:09,350
برای کارهای i/o باند عالی هستند، بنابراین این به معنای
62
00:03:09,350 –> 00:03:14,220
وظایف ورودی-خروجی است، به عنوان مثال زمانی که
63
00:03:14,220 –> 00:03:17,010
برنامه شما مجبور است با دستگاه های کندی
64
00:03:17,010 –> 00:03:18,870
مانند هارد دیسک یا اتصال شبکه صحبت
65
00:03:18,870 –> 00:03:23,330
کند، با threading
66
00:03:23,330 –> 00:03:26,310
برنامه شما می توانید از زمان انتظار برای
67
00:03:26,310 –> 00:03:28,730
این دستگاه ها و سپس به صورت هوشمند
68
00:03:28,730 –> 00:03:32,459
به تهدیدات دیگر سوئیچ کنید و در این بین پردازش را انجام دهید،
69
00:03:32,459 –> 00:03:35,160
بنابراین به این
70
00:03:35,160 –> 00:03:38,239
ترتیب می توانید سرعت کد خود را با
71
00:03:38,239 –> 00:03:40,769
Threading افزایش دهید، اما از طرف دیگر
72
00:03:40,769 –> 00:03:43,830
Threading توسط Gil محدود می شود، بنابراین
73
00:03:43,830 –> 00:03:47,370
Gil تنها به یک رشته اجازه می دهد در زمانی
74
00:03:47,370 –> 00:03:50,910
که محاسبات موازی واقعی
75
00:03:50,910 –> 00:03:54,870
در multi-threading وجود ندارد، بنابراین Threading
76
00:03:54,870 –> 00:03:58,769
برای کارهای محدود به cpu تأثیری
77
00:03:58,769 –> 00:04:02,640
ندارد و قطع و قابل کشتن نیستند، بنابراین
78
00:04:02,640 –> 00:04:07,430
مراقب حافظه باشید. در اینجا فاش می شود و از آنجایی که
79
00:04:07,430 –> 00:04:12,120
تهدیدها حافظه مشابهی دارند،
80
00:04:12,120 –> 00:04:15,269
باید مراقب شرایط مسابقه باشید و
81
00:04:15,269 –> 00:04:19,350
شرایط مسابقه رخ می دهد که در آن زمانی که دو یا
82
00:04:19,350 –> 00:04:23,150
چند تهدید بخواهند یک متغیر را به طور همزمان تغییر دهند،
83
00:04:23,150 –> 00:04:27,180
بنابراین به
84
00:04:27,180 –> 00:04:31,130
راحتی می تواند باعث ایجاد باگ یا خرابی شود و
85
00:04:31,130 –> 00:04:33,690
بله، همینطور است. تفاوت بین
86
00:04:33,690 –> 00:04:36,960
فرآیندها و تهدیدها و اکنون من
87
00:04:36,960 –> 00:04:39,509
چند بار به Gil اشاره کردم، پس
88
00:04:39,509 –> 00:04:42,509
بیایید در مورد Gil صحبت کنیم و این
89
00:04:42,509 –> 00:04:44,580
به عنوان قفل مفسر جهانی نیز شناخته می شود
90
00:04:44,580 –> 00:04:48,030
و این قفلی در پایتون است که
91
00:04:48,030 –> 00:04:50,430
در هر بار فقط یک رشته اجازه می دهد تا
92
00:04:50,430 –> 00:04:54,870
اجرا شود و این
93
00:04:54,870 –> 00:04:57,840
در جامعه پایتون بسیار بحث برانگیز است، اما چرا به آن
94
00:04:57,840 –> 00:05:01,590
نیاز است و این هم به این دلیل نیست که در C
95
00:05:01,590 –> 00:05:04,860
Python بنابراین C prime
96
00:05:04,860 –> 00:05:07,229
پیاده سازی پایتون مرجع است که
97
00:05:07,229 –> 00:05:09,419
هنگام دانلود و نصب پایتون از python.org دریافت می کنید،
98
00:05:09,419 –> 00:05:14,130
بنابراین گلیس مورد نیاز است زیرا
99
00:05:14,130 –> 00:05:18,419
در c python یک مدیریت حافظه وجود دارد
100
00:05:18,419 –> 00:05:23,870
که به صورت رشته ای ایمن نیست، بنابراین در c python
101
00:05:23,870 –> 00:05:26,419
تکنیکی وجود دارد که به نام
102
00:05:26,419 –> 00:05:29,280
شمارش مرجع برای حافظه است
103
00:05:29,280 –> 00:05:31,949
که برای مدیریت حافظه استفاده می شود و این
104
00:05:31,949 –> 00:05:34,650
به معنای t اشیاء کلاه ایجاد شده در پایتون
105
00:05:34,650 –> 00:05:37,139
دارای یک متغیر تعداد مرجع هستند که
106
00:05:37,139 –> 00:05:39,659
تعداد مراجعی را که به شی اشاره می کنند ردیابی می
107
00:05:39,659 –> 00:05:42,330
کند و وقتی این
108
00:05:42,330 –> 00:05:44,940
تعداد به صفر رسید حافظه
109
00:05:44,940 –> 00:05:48,510
توسط شی آزاد می شود و
110
00:05:48,510 –> 00:05:52,370
مشکل اکنون در چند رشته ای این است که
111
00:05:52,370 –> 00:05:55,260
متغیر تعداد مرجع
112
00:05:55,260 –> 00:05:58,080
نیاز به محافظت در برابر شرایط مسابقه دارد
113
00:05:58,080 –> 00:05:59,880
که در آن دو تهدید
114
00:05:59,880 –> 00:06:02,250
به طور همزمان مقدار را افزایش یا کاهش می دهد،
115
00:06:02,250 –> 00:06:05,580
بنابراین اگر این اتفاق بیفتد می
116
00:06:05,580 –> 00:06:11,370
تواند باعث نشت حافظه شود
117
00:06:11,370 –> 00:06:14,159
که هرگز آزاد نمی شود یا می تواند به
118
00:06:14,159 –> 00:06:16,860
اشتباه حافظه را آزاد کند در حالی که
119
00:06:16,860 –> 00:06:20,250
مرجع به آن شی هنوز وجود دارد. بنابراین
120
00:06:20,250 –> 00:06:24,630
به همین دلیل است که آنها
121
00:06:24,630 –> 00:06:28,440
آبشش را معرفی کردند و چند راه برای جلوگیری
122
00:06:28,440 –> 00:06:31,349
از آبشش اگر میخواهید از
123
00:06:31,349 –> 00:06:35,639
محاسبات موازی استفاده کنید استفاده از پردازش چندگانه است یا
124
00:06:35,639 –> 00:06:38,279
میتوانید از پیادهسازی رایگان رشتهای رایگان
125
00:06:38,279 –> 00:06:41,400
پایتون استفاده کنید و پایتون