در این مطلب، ویدئو چگونه به راحتی برنامه نویسی ناهمزمان را با Asyncio در پایتون انجام دهیم با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:23:09
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,000 –> 00:00:01,520
اینکه آیا در حال انجام اسکراپینگ وب هستید،
2
00:00:01,520 –> 00:00:04,080
بازیابی داده ها از پایگاه داده یا
3
00:00:04,080 –> 00:00:06,799
تعامل با یک api، دانستن در مورد
4
00:00:06,799 –> 00:00:09,599
عملیات ناهمزمان در این ویدیو بسیار مهم است،
5
00:00:09,599 –> 00:00:11,280
من به شما نشان خواهم داد که چگونه
6
00:00:11,280 –> 00:00:13,599
ناهمگام کار می کند چگونه می توانید کدی را بنویسید که
7
00:00:13,599 –> 00:00:15,040
به صورت موازی اجرا شود تا
8
00:00:15,040 –> 00:00:17,119
برنامه شما تبدیل شود.
9
00:00:17,119 –> 00:00:19,439
قبل از شروع کار بسیار کارآمدتر است، من چیزی برای شما
10
00:00:19,439 –> 00:00:21,760
دارم، یک راهنمای طراحی است که نوشتم که
11
00:00:21,760 –> 00:00:23,760
هفت مرحله را که
12
00:00:23,760 –> 00:00:25,840
هنگام طراحی یک برنامه نرم افزاری جدید
13
00:00:25,840 –> 00:00:29,519
14
00:00:29,519 –> 00:00:32,238
15
00:00:32,238 –> 00:00:34,160
انجام می دهم توضیح می دهد.
16
00:00:34,160 –> 00:00:36,079
فوراً روی کدی که روی آن کار می کنید اعمال کنید
17
00:00:36,079 –> 00:00:38,079
و روش طراحی نرم افزار خود را بهبود ببخشید،
18
00:00:38,079 –> 00:00:39,960
بنابراین آن را به صورت رایگان در راهنمای طراحی ironcodes.com دریافت کنید،
19
00:00:39,960 –> 00:00:41,520
20
00:00:41,520 –> 00:00:43,840
من همچنین این پیوند را
21
00:00:43,840 –> 00:00:46,079
در توضیحات ویدیو قرار داده ام اکنون اجازه دهید
22
00:00:46,079 –> 00:00:48,320
به مثال امروز نگاهی بیندازیم.
23
00:00:48,320 –> 00:00:50,160
مثالی که امروز به آن نگاه خواهم کرد
24
00:00:50,160 –> 00:00:52,719
یک سرویس اینترنت اشیا است، یک
25
00:00:52,719 –> 00:00:55,120
فایل اصلی ساده وجود دارد که یک
26
00:00:55,120 –> 00:00:57,360
اینترنت اشیاء سرویس را ایجاد می کند و
27
00:00:57,360 –> 00:01:00,160
سپس چند دستگاه را ثبت می کند.
28
00:01:00,160 –> 00:01:02,320
دستگاههای هوشمند مانند چراغ رنگی، بلندگو و
29
00:01:02,320 –> 00:01:04,319
توالت هوشمند، من واقعاً نمیخواهم بدانم
30
00:01:04,319 –> 00:01:06,479
معنی آن چیست، اما به هر حال، بنابراین هر یک از
31
00:01:06,479 –> 00:01:08,799
این دستگاهها در سرویس ثبت میشوند
32
00:01:08,799 –> 00:01:11,200
و سپس میتوانید چند
33
00:01:11,200 –> 00:01:13,520
برنامه را اجرا کنید مانند برنامه بیدار شدن
34
00:01:13,520 –> 00:01:15,600
که Hue Light رو روشن
35
00:01:15,600 –> 00:01:17,600
36
00:01:17,600 –> 00:01:20,000
میکنه بلندگو رو روشن میکنه و بعد یه آهنگ روی اسپیکر پخش میکنه و یه برنامه خواب هست
37
00:01:20,000 –> 00:01:22,080
که hue light و
38
00:01:22,080 –> 00:01:24,799
اسپیکر رو خاموش میکنه و بعد توالتها رو هم براتون شستشو و
39
00:01:24,799 –> 00:01:26,560
تمیز میکنه که
40
00:01:26,560 –> 00:01:29,200
واقعا مفیده و بعد اجرا میکنیم این برنامه
41
00:01:29,200 –> 00:01:31,520
ها همچنین یک بسته محلی
42
00:01:31,520 –> 00:01:33,600
به نام iot وجود دارد که شامل
43
00:01:33,600 –> 00:01:35,280
چند کلاس است که ما در اینجا
44
00:01:35,280 –> 00:01:37,119
در این فایل اصلی استفاده می کنیم، اجازه دهید در واقع
45
00:01:37,119 –> 00:01:38,640
این را کمی کوچکتر کنم تا
46
00:01:38,640 –> 00:01:41,360
بهتر ببینید یک فایل دستگاه وجود دارد که
47
00:01:41,360 –> 00:01:44,000
حاوی انواع مختلف است. دستگاهها درست است،
48
00:01:44,000 –> 00:01:45,680
بنابراین یک دستگاه Hue Light و یک
49
00:01:45,680 –> 00:01:48,799
دستگاه بلندگوی هوشمند و یک دستگاه توالت هوشمند وجود دارد
50
00:01:48,799 –> 00:01:50,159
و هر کدام از اینها چند
51
00:01:50,159 –> 00:01:51,920
روش دارند، بنابراین قطع اتصال
52
00:01:51,920 –> 00:01:54,720
و ارسال پیام ارسال پیام دریافت میشود. یک
53
00:01:54,720 –> 00:01:57,040
نوع پیام که در این فایل و
54
00:01:57,040 –> 00:01:58,799
نوع پیام است اساساً یک enum برای
55
00:01:58,799 –> 00:02:00,960
روشن یا خاموش کردن یا تغییر رنگ
56
00:02:00,960 –> 00:02:03,759
نور یا پخش یک آهنگ باز و بسته و
57
00:02:03,759 –> 00:02:06,000
غیره است و سپس یک پیام کلاس داده وجود دارد
58
00:02:06,000 –> 00:02:08,399
که حاوی یک شناسه دستگاه است
59
00:02:08,399 –> 00:02:10,639
که برای آن پیام نوع
60
00:02:10,639 –> 00:02:12,239
پیامی است که میخواهید ارسال کنید و
61
00:02:12,239 –> 00:02:14,319
رشتهای حاوی دادههایی است و
62
00:02:14,319 –> 00:02:16,319
در نهایت ما یک سرویس داریم که دارای یک
63
00:02:16,319 –> 00:02:18,319
تابع کمکی برای تولید یک شناسه است و
64
00:02:18,319 –> 00:02:20,879
از یک پروتکل برای تعریف آنچه در
65
00:02:20,879 –> 00:02:23,360
هنگام ثبت دستگاه در آن انتظار میرود استفاده میکند.
66
00:02:23,360 –> 00:02:25,280
بنابراین دستگاه باید یک
67
00:02:25,280 –> 00:02:27,760
68
00:02:27,760 –> 00:02:29,760
روش
69
00:02:29,760 –> 00:02:32,000
70
00:02:32,000 –> 00:02:34,080
71
00:02:34,080 –> 00:02:36,319
قطع اتصال و ارسال پیام
72
00:02:36,319 –> 00:02:38,560
داشته باشد و خود سرویس بسیار ساده
73
00:02:38,560 –> 00:02:41,680
است. که
74
00:02:41,680 –> 00:02:44,319
لیستی از پیام ها را می گیرد و سپس
75
00:02:44,319 –> 00:02:46,800
با استفاده از روش ارسال
76
00:02:46,800 –> 00:02:48,560
پیام در اینجا که
77
00:02:48,560 –> 00:02:51,040
دستگاه را در فرهنگ لغت جستجو می کند و سپس پیام را ارسال می کند آنها را به دستگاه مناسب ارسال می کند.
78
00:02:51,040 –> 00:02:53,519
خیلی ساده است
79
00:02:53,519 –> 00:02:55,280
اجازه دهید من این برنامه را اجرا کنم و سپس من می توانم به
80
00:02:55,280 –> 00:02:57,599
شما نشان دهم که خروجی چیست تا ببینید
81
00:02:57,599 –> 00:03:00,560
که چند پیام اتصال دریافت می کند
82
00:03:00,560 –> 00:03:02,720
و سپس وقتی برنامه را اجرا می کند
83
00:03:02,720 –> 00:03:04,879
نشان می دهد که وقتی پیام اکنون مدیریت می شود چه اتفاقی می افتد،
84
00:03:04,879 –> 00:03:06,959
البته اینها هستند
85
00:03:06,959 –> 00:03:08,879
دستگاههای هوشمند واقعی که من به
86
00:03:08,879 –> 00:03:10,959
آن وصل میکنم، عمدتاً نمونهای برای نشان دادن نحوه
87
00:03:10,959 –> 00:03:12,640
عملکرد عملیات ناهمزمان
88
00:03:12,640 –> 00:03:14,480
است، روش سنتی برخورد
89
00:03:14,480 –> 00:03:16,319
با کدهای ناهمزمان و موازی،
90
00:03:16,319 –> 00:03:18,480
استفاده از رشتهها در هر زمان که
91
00:03:18,480 –> 00:03:20,640
برنامهای را راهاندازی میکنید، در واقع
92
00:03:20,640 –> 00:03:22,959
فرآیندی را راهاندازی میکند که عملیاتی است. سیستمی که این
93
00:03:22,959 –> 00:03:24,879
کار را برای شما انجام می دهد و یک فرآیند
94
00:03:24,879 –> 00:03:27,840
اساساً یک قطعه از cpu و حافظه است که
95
00:03:27,840 –> 00:03:30,159
شما می توانید در یک فرآیند اختصاص دهید شما
96
00:03:30,159 –> 00:03:31,920
می توانید یک یا چند رشته داشته باشید.
97
00:03:31,920 –> 00:03:34,720
98
00:03:34,720 –> 00:03:37,599
99
00:03:37,599 –> 00:03:39,599
بین رشتهها
100
00:03:39,599 –> 00:03:41,840
و پردازندهها، پردازندهها
101
00:03:41,840 –> 00:03:43,760
واقعاً یک حافظه جداگانه به آنها اختصاص میدهند،
102
00:03:43,760 –> 00:03:45,519
در حالی که رشتهها میتوانند
103
00:03:45,519 –> 00:03:47,440
رشتههای حافظه را به اشتراک بگذارند ac در واقع بسیار
104
00:03:47,440 –> 00:03:49,360
مفید است زیرا اغلب شما باید
105
00:03:49,360 –> 00:03:51,360
منتظر چیزهایی بمانید، به عنوان مثال وقتی یک
106
00:03:51,360 –> 00:03:53,280
فایل را باز می کنید باید منتظر بمانید تا داده ها
107
00:03:53,280 –> 00:03:55,280
در دسترس قرار گیرند یا باید
108
00:03:55,280 –> 00:03:57,599
منتظر پاسخ یک شبکه باشید و با
109
00:03:57,599 –> 00:03:59,439
نخ ها این بدان معنی است که می توانید کارهای دیگری
110
00:03:59,439 –> 00:04:01,200
را در حین انجام دهید. صبر کنید، حتی اگر
111
00:04:01,200 –> 00:04:02,959
تهدیدها بسیار قدرتمند هستند،
112
00:04:02,959 –> 00:04:04,799
چند مشکل نیز با آنها وجود دارد، یکی از
113
00:04:04,799 –> 00:04:06,640
مشکلات این است که به دلیل اینکه آنها حافظه مشترکی دارند، به
114
00:04:06,640 –> 00:04:09,360
راحتی با
115
00:04:09,360 –> 00:04:11,439
باگ های شرایط مسابقه مواجه می شوید که در آن تهدیدها سعی می کنند
116
00:04:11,439 –> 00:04:13,280
همزمان داده ها را بخوانند و بنویسند که منجر به
117
00:04:13,280 –> 00:04:15,120
انواع رفتارهای غیرقابل پیش بینی و
118
00:04:15,120 –> 00:04:17,600
خرابی می شود. مشکل دیگر این است که درک برنامه ها
119
00:04:17,600 –> 00:04:19,199
به طور کلی در
120
00:04:19,199 –> 00:04:20,959
صورتی که چندین رشته داشته باشید کمی سخت تر می شود
121
00:04:20,959 –> 00:04:22,639
زیرا به عنوان یک توسعه دهنده
122
00:04:22,639 –> 00:04:24,560
باید به این فکر کنید که وقتی
123
00:04:24,560 –> 00:04:26,720
رشته های مختلف با یکدیگر تعامل
124
00:04:26,720 –> 00:04:28,400
دارند، به این معنی است که حتی
125
00:04:28,400 –> 00:04:30,880
اگر شما می توانید یک برنامه
126
00:04:30,880 –> 00:04:32,880
چند رشته ای ایجاد کنید، به این معنی نیست
127
00:04:32,880 –> 00:04:34,720
که در هر برنامه فقط باید
128
00:04:34,720 –> 00:04:37,120
از رشته ها استفاده کنید زیرا می توانید
129
00:04:37,120 –> 00:04:38,880
آنها را مطابقت دهید. cate چیزها و مسئله سوم
130
00:04:38,880 –> 00:04:40,639
این است که آنها در واقع مقداری سربار را معرفی می کنند
131
00:04:40,639 –> 00:04:42,560
زیرا بخشی از
132
00:04:42,560 –> 00:04:44,720
سیستم وجود دارد که باید تهدیدات را مدیریت کند و
133
00:04:44,720 –> 00:04:47,520
آنها را مجدداً راه اندازی کند و غیره را متوقف کند و همچنین
134
00:04:47,520 –> 00:04:49,919
زمان می برد که یک جایگزین برای
135
00:04:49,919 –> 00:04:51,680
تهدیدات وجود دارد و به آن برنامه نویسی ناهمزمان می گویند.
136
00:04:51,680 –> 00:04:54,000
چیزی که ما آن
137
00:04:54,000 –> 00:04:57,840
را آینده یا قول یا تاخیر
138
00:04:57,840 –> 00:05:00,240
یا معوق می نامیم و این چیزها
139
00:05:00,240 –> 00:05:03,520
نوعی پروکسی برای یک شی است که در
140
00:05:03,520 –> 00:05:05,759
این لحظه هنوز ناشناخته است و قرار
141
00:05:05,759 –> 00:05:08,400
است بعداً در آینده به طور معمول حل شود
142
00:05:08,400 –> 00:05:10,320
زیرا محاسبه آن شیء
143
00:05:10,320 –> 00:05:13,199
انجام نشده است. هنوز در جاوا اسکریپت کامل شده است
144
00:05:13,199 –> 00:05:15,440
این چیزها در
145
00:05:15,440 –> 00:05:17,520
پایتون وعده نامیده می شوند که به آنها آینده می گویند
146
00:05:17,520 –> 00:05:19,600
آنها دقیقاً یکسان نیستند، تفاوت جزئی
147
00:05:19,600 –> 00:05:21,280
بین آنها وجود دارد اما
148
00:05:21,280 –> 00:05:23,039
کمابیش به یک شکل استفاده می شوند اما
149
00:05:23,039 –> 00:05:24,720
معمولاً وقتی
150
00:05:24,720 –> 00:05:26,320
کدهای ناهمزمان را خودتان می نویسید چه در
151
00:05:26,320 –> 00:05:29,280
جاوا اسکریپت باشد چه در پایتون،
152
00:05:29,280 –> 00:05:31,680
معمولاً مستقیماً با این اشیاء روبرو نخواهید شد
153
00:05:31,680 –> 00:05:33,840
زیرا پسوندهای نحوی وجود دارند که
154
00:05:33,840 –> 00:05:36,639
به شما در نوشتن کد کمک می کنند. e که از آنها استفاده می کند اما
155
00:05:36,639 –> 00:05:38,560
مجبور نیستید خودتان این اشیاء را ایجاد
156
00:05:38,560 –> 00:05:41,680
کنید و وعده های آینده از
157
00:05:41,680 –> 00:05:43,440
برنامه نویسی عملکردی
158
00:05:43,440 –> 00:05:45,680
159
00:05:45,680 –> 00:05:47,840
160
00:05:47,840 –> 00:05:50,080
161
00:05:50,080 –> 00:05:52,479
ناشی می
162
00:05:52,479 –> 00:05:55,120
شود. نقش کلیدی
163
00:05:55,120 –> 00:05:57,600
در تعریف قراردادهای آتی و وعدهها و نحوه استفاده از
164
00:05:57,600 –> 00:05:59,120
آنها داشته است، اگر میخواهید
165
00:05:59,120 –> 00:06:01,120
درباره اصول طراحی جامد اطلاعات بیشتری کسب
166
00:06:01,120 –> 00:06:02,880
167
00:06:02,880 –> 00:06:05,360
168
00:06:05,360 –> 00:06:07,120
کنید. به عنوان مثال برای استفاده از
169
00:06:07,120 –> 00:06:09,440
عملیات ناهمزمان به جای آن،
170
00:06:09,440 –> 00:06:12,080
به خصوص در پایتون 3.10،
171
00:06:12,080 –> 00:06:14,479
انجام عملیات ناهمزمان
172
00:06:14,479 –> 00:06:16,639
در برنامه های پایتون شما بسیار ساده تر شده است، هنگامی که
173
00:06:16,639 –> 00:06:18,639
می خواهید یک برنامه ناهمزمان را اجرا
174
00:06:18,639 –> 00:06:21,039
کنید، می توانید از async io برای رسیدن به آن
175
00:06:21,039 –> 00:06:23,600
بسیار آسان استفاده کنید، اجازه دهید ابتدا async io
176
00:06:23,600 –> 00:06:26,560
و i را وارد کنیم. منظورم را به شما نشان خواهم داد،
177
00:06:27,280 –> 00:06:29,520
بنابراین این بسته async io است و
178
00:06:29,520 –> 00:06:31,680
اکنون برای اینکه اصلی را ناهمزمان کنیم
179
00:06:31,680 –> 00:06:34,720
تنها کاری که باید انجام دهیم این است که بنویسیم ync
180
00:06:34,720 –> 00:06:36,639
در جلوی آن و اکنون main یک
181
00:06:36,639 –> 00:06:39,120
تابع ناهمزمان است و اکنون
182
00:06:39,120 –> 00:06:40,880
مشکلی در اینجا وجود دارد زیرا ما
183
00:06:40,880 –> 00:06:42,720
آن را ناهمزمان نمینامیم
184
00:06:42,720 –> 00:06:45,240
، میتوانیم به راحتی با استفاده از تابع asyncio.run main را به صورت ناهمزمان اجرا
185
00:06:45,240 –> 00:06:49,479
186
00:06:49,840 –> 00:06:51,919
کنیم.
187
00:06:51,919 –> 00:06:54,639
در داخل
188
00:06:54,639 –> 00:06:56,720
تابع اصلی ناهمزمان
189
00:06:56,720 –> 00:06:58,720
چیزی وجود ندارد که در واقع متکی به
190
00:06:58,720 –> 00:07:00,840
ناهمزمان بودن چیزها باشد، بنابراین وقتی
191
00:07:00,840 –> 00:07:04,080
این را اجرا میکنم دقیقاً همان نتیجه قبلی را میگیرم،
192
00:07:04,080 –> 00:07:06,880
اما اکنون بیایید دستگاهها
193
00:07:06,880 –> 00:07:09,440
و سرورهایمان را به یک دستگاه و سرویس ناهمزمان تبدیل کنیم
194
00:07:09,440 –> 00:07:11,680
که منطقی است
195
00:07:11,680 –> 00:07:14,160
زیرا درست است. اگر معمولاً به دستگاهی متصل میشوید،
196
00:07:14,160 –> 00:07:16,160
این اتفاق از طریق یک شبکه میافتد، بنابراین
197
00:07:16,160 –> 00:07:17,440
باید
198
00:07:17,440 –> 00:07:19,280
منتظر پاسخ باشید تا آن اتصال
199
00:07:19,280 –> 00:07:21,120
موفقیتآمیز باشد، بنابراین این یک
200
00:07:21,120 –> 00:07:22,960
عملیات ناهمزمان معمولی است و کاری که من
201
00:07:22,960 –> 00:07:26,000
میخواهم در کلاسهای دستگاههایم انجام دهم.
202
00:07:26,000 –> 00:07:28,240
میخواهیم این روشهای قطع اتصال
203
00:07:28,240 –> 00:07:30,880
و ارسال پیام را به
204
00:07:30,880 –> 00:07:33,599
روشهای ناهمزمان تبدیل کنیم، بنابراین این کار را
205
00:07:33,599 –> 00:07:34,960
دقیقاً به همان روشی انجام میدهیم که برای تابع اصلی
206
00:07:34,960 –> 00:07:37,360
که اکنون نوشتید در
207
00:07:37,360 –> 00:07:38,400
جلوی آن
208
00:07:38,400 –> 00:07:42,039
بیایید این کار را انجام دهیم هر کجا
209
00:07:50,960 –> 00:07:53,440
که میرویم هرکدام از این دستگاهها
210
00:07:53,440 –> 00:07:55,360
ناهمزمان هستند و بیایید
211
00:07:55,360 –> 00:07:57,520
212
00:07:57,520 –> 00:08:00,400
با معرفی یک
213
00:08:00,400 –> 00:08:03,039
غلاف برای شبیهسازی تاخیر اتصال، مقداری ناهمزمانی ناهمزمان واقعی را نیز به آن اضافه
214
00:08:03,039 –> 00:08:05,599
کنیم، بنابراین میخواهیم async io را وارد کنیم.
215
00:08:05,599 –> 00:08:08,080
چون من به تابع خواب نیاز دارم و
216
00:08:08,080 –> 00:08:10,319
اجازه دهید اینجا یک
217
00:08:10,319 –> 00:08:14,479
خواب غیر همگام و نقطه ای را
218
00:08:14,479 –> 00:08:15,440
برای
219
00:08:15,440 –> 00:08:18,000
نیم ثانیه اضافه کنیم و این را
220
00:08:18,000 –> 00:08:21,000
در هر جایی
221
00:08:28,400 –> 00:08:30,080
که می رویم قرار دهیم، اکنون هر زمان که این
222
00:08:30,080 –> 00:08:31,840
روش را فراخوانی می کنیم نیم ثانیه طول می کشد
223
00:08:31,840 –> 00:08:33,440
تا پاسخ وارد شود و این
224
00:08:33,440 –> 00:08:36,000
کار بر نحوه اجرای برنامهها
225
00:08:36,000 –> 00:08:38,080
در عملکرد اصلی خود تأثیر میگذارد، بنابراین دستگاههای خود را داریم
226
00:08:38,080 –> 00:08:40,080
که اکنون ناهمزمان هستند،
227
00:08:40,080 –> 00:08:41,679
بخشی از پیام را که نیازی به تغییر آن نداریم،
228
00:08:41,679 –> 00:08:43,200
زیرا این فقط یک
229
00:08:43,200 –> 00:08:45,600
نمایش پیام است و سرویسی است که
230
00:08:45,600 –> 00:08:48,959
اکنون میتوانیم آن را ناهمزمان کنیم، بنابراین به جای
231
00:08:48,959 –> 00:08:51,440
انتظار دستگاهی که دارای
232
00:08:51,440 –> 00:08:53,519
متدهای استاندارد پایتون است، اکنون میتوانیم پروتکلی ایجاد کنیم
233
00:08:53,519 –> 00:08:56,080
که انتظار روشهای ناهمزمان را دارد
234
00:08:56,080 –> 00:08:58,480
235
00:09:00,320 –> 00:09:02,080
و سپس میتوانیم
236
00:09:02,080 –> 00:09:04,320
خود سطح را نیز ناهمزمان کنیم تا این
237
00:09:04,320 –> 00:09:06,000
روشها یک ناهمزمان خواهد بود
238
00:09:06,000 –> 00:09:09,000
239
00:09:09,760 –> 00:09:12,160
این یکی نیازی به ناهمزمان بودن ندارد
240
00:09:12,160 –> 00:09:14,080
در حال اجرا برنامه باید
241
00:09:14,080 –> 00:09:16,480
ناهمزمان باشد و ارسال پیام
242
00:09:16,480 –> 00:09:19,040
نیز باید همزمان باشد اکنون می بینم
243
00:09:19,040 –> 00:09:20,880
که ما در اینجا چند خطا دریافت می
244
00:09:20,880 –> 00:09:23,680
کنیم زیرا اکنون در حال تماس هستیم متدهای داخل
245
00:09:23,680 –> 00:09:25,839
اینها پیام می فرستند و متدهای برنامه را اجرا می کنند
246
00:09:25,839 –> 00:09:28,399
که خود ناهمزمان هستند،
247
00:09:28,399 –> 00:09:30,720
مثلاً اجازه دهید به ثبت دستگاه نگاه کنیم،
248
00:09:30,720 –> 00:09:32,480
بنابراین
249
00:09:32,480 –> 00:09:35,279
روش اتصال وجود دارد که ناهمزمان است، بنابراین ناهمگام
250
00:09:35,279 –> 00:09:37,680
آنچه در اینجا در
251
00:09:37,680 –> 00:09:39,839
مقابل نام هر یک از این روش ها نوشته ایم نشان
252
00:09:39,839 –> 00:09:42,640
می دهد که این روش است. به صورت ناهمزمان اجرا
253
00:09:42,640 –> 00:09:44,160
شود، کلمه کلیدی دیگری به نام
254
00:09:44,160 –> 00:09:46,480
awaits داریم که به ما می گوید باید
255
00:09:46,480 –> 00:09:48,800
منتظر بمانیم تا متد ناهمزمان
256
00:09:48,800 –> 00:09:50,399
تمام شود قبل از اینکه
257
00:09:50,399 –> 00:09:52,080
به بقیه کدها ادامه دهیم، بنابراین این چیزی است
258
00:09:52,080 –> 00:09:53,839
که می توانیم اینجا بنویسیم،
259
00:09:53,839 –> 00:09:55,920
بنابراین در این روش ناهمزمان منتظر می
260
00:09:55,920 –> 00:09:58,399
مانیم تا اتصال برقرار شود. متد
261
00:09:58,399 –> 00:10:00,240
تمام شده است و سپس ما این کارها را
262
00:10:00,240 –> 00:10:02,079
انجام می دهیم بمانید ببینید
263
00:10:02,079 –> 00:10:04,560
با موضوعاتی که اصلاً
264
00:10:04,560 –> 00:10:07,040
این مکانیسم را نداریم کار می کند.
265
00:10:07,040 –> 00:10:09,120
این روش واقعاً بصری
266
00:10:09,120 –> 00:10:11,279
کار با عملیات ناهمزمان
267
00:10:11,279 –> 00:10:13,360
مانند اتصالات پایگاه داده یا اتصال
268
00:10:13,360 –> 00:10:15,200
به دستگاههایی را بیابید، مانند اینکه ما در اینجا همین
269
00:10:15,200 –> 00:10:17,360
کار را برای لغو ثبت دستگاه انجام میدهیم، بنابراین
270
00:10:17,360 –> 00:10:19,519
باید وزنهای را نیز در اینجا اضافه کنم تا
271
00:10:19,519 –> 00:10:21,920
صبر کنم تا روش قطع
272
00:10:21,920 –> 00:10:24,320
شود و سپس ادامه یابد. برای اجرای
273
00:10:24,320 –> 00:10:26,240
این خط کد و برای اجرای یک
274
00:10:26,240 –> 00:10:28,320
برنامه می توانم همین کار را انجام دهم بنابراین در
275
00:10:28,320 –> 00:10:30,000
276
00:10:30,000 –> 00:10:32,240
اینجا وزنه ای جلوی این
277
00:10:32,240 –> 00:10:34,000
تماس ارسال پیام می نویسم و در ارسال پیام باید همین کار را انجام دهم زی
278
00:10:34,000 –> 00:10:35,920
ا این نیز یک رو
279
00:10:35,920 –> 00:10:38,160
ناهمزمان است. اینجا می رویم
280
00:10:38,160 –> 00:10:40,480
همه چیز را متأسفانه باید منتظر
281
00:10:40,480 –> 00:10:42,720
بمانیم، بنابراین ما اکنون می رویم همه چیز
282
00:10:42,720 –> 00:10:45,200
در اینجا به صورت ناهمزمان انجام می شود که
283
00:10:45,200 –> 00:10:47,120
خوب است و در تابع اصلی اکنون می توانیم
284
00:10:47,120 –> 00:10:49,760
متدها را به صورت ناهمزمان نیز فراخوانی کنیم، به
285
00:10:49,760 –> 00:10:51,760
این معنی که باید وزنی
286
00:10:51,760 –> 00:10:54,880
را جلوی آن قرار دهیم. روش های ثبت
287
00:10:54,880 –> 00:10:57,120
در اینجا
288
00:10:58,240 –> 00:11:01,040
مانند این است و اجرای برنامه اکنون
289
00:11:01,040 –> 00:11:02,160
نیز
290
00:11:02,160 –> 00:11:03,839
ناهمزمان است،
291
00:11:03,839 –> 00:11:06,320
بنابراین آنچه در اینجا اتفاق می افتد خوب است، ما یکی
292
00:11:06,320 –> 00:11:08,320
یکی منتظر می مانیم تا ثبت این دستگاه ها به پایان برسد.
293
00:11:08,320 –> 00:11:10,480
برنامه ها را
294
00:11:10,480 –> 00:11:13,279
در اینجا efine کنید و سپس این برنامه ها را به
295
00:11:13,279 –> 00:11:15,040
ترتیب اجرا می کنیم و هر بار منتظر می مانیم تا
296
00:11:15,040 –> 00:11:16,800
تمام شوند و حالا وقتی این را اجرا می کنم،
297
00:11:16,800 –> 00:11:19,120
بیایید فایل را ذخیره کرده و این را اجرا کنیم، می بینید
298
00:11:19,120 –> 00:11:21,200
که در واقع کار نمی کند و
299
00:11:21,200 –> 00:11:23,680
در واقع بسیار دلیل ساده این است
300
00:11:23,680 –> 00:11:25,760
که روال خوابی که در
301
00:11:25,760 –> 00:11:27,760
اینجا با آن تماس میگیریم، باید
302
00:11:27,760 –> 00:11:29,440
منتظر آن باشیم،
303
00:11:29,440 –> 00:11:33,959
در غیر این صورت بدیهی است که کار نمیکند،
304
00:11:46,560 –> 00:11:48,560
بنابراین دقیقاً به همین دلیل است
305
00:11:48,560 –> 00:11:51,279
که باید منتظر بمانیم تا عملکرد خواب
306
00:11:51,279 –> 00:11:53,680
به پایان برسد تا این پیام را چاپ کنیم.
307
00:11:53,680 –> 00:11:56,160
حالا بیایید این را یک بار دیگر امتحان
308
00:11:56,160 –> 00:11:58,399
کنیم
309
00:11:59,040 –> 00:12:01,200
و اکنون می بینید که همه چیز
310
00:12:01,200 –> 00:12:03,360
نیم ثانیه طول می کشد، بنابراین ما در حال اتصال هستیم و
311
00:12:03,360 –> 00:12:05,279
این دو برنامه را اجرا می کنیم و
312
00:12:05,279 –> 00:12:08,000
منتظر هر نتیجه هستیم تا به این ترتیب
313
00:12:08,000 –> 00:12:09,760
ما چیز بیشتری از اضافه کردن چند برنامه انجام نداده ایم.
314
00:12:09,760 –> 00:12:11,440
عملیات خواب و منتظر ماندن
315
00:12:11,440 –> 00:12:12,880
تا پایان آنها، به طوری