در این مطلب، ویدئو Python Async Web Scraping – روز 27 – 30 روز پایتون با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:38:53
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,080 –> 00:00:02,639
سلام، به روز 27 خوش آمدید، در این
2
00:00:02,639 –> 00:00:03,840
3
00:00:03,840 –> 00:00:07,040
روز، ما اکنون در روز دوازدهم، اسکراپینگ غیرهمزمان وب را انجام می دهیم
4
00:00:07,040 –> 00:00:10,719
که
5
00:00:10,719 –> 00:00:12,719
اساساً ساده تر از خراش وب ناهمزمان است،
6
00:00:12,719 –> 00:00:13,920
اما
7
00:00:13,920 –> 00:00:16,960
کمی کندتر است، بنابراین اسکرپینگ وب ناهمزمان
8
00:00:16,960 –> 00:00:19,680
به ما امکان می دهد از مزایای
9
00:00:19,680 –> 00:00:22,960
پایتون استفاده کنیم. قابلیتهای ناهمزمان داخلی 3
10
00:00:22,960 –> 00:00:23,760
11
00:00:23,760 –> 00:00:27,039
با async io،
12
00:00:28,320 –> 00:00:29,840
بنابراین کل این سری کاری که ما
13
00:00:29,840 –> 00:00:32,479
انجام دادهایم نوشتن کد همزمان است که
14
00:00:32,479 –> 00:00:34,079
کدی را مسدود میکند
15
00:00:34,079 –> 00:00:36,320
که اساساً میگوید سلام، اگر
16
00:00:36,320 –> 00:00:37,520
تابعی
17
00:00:37,520 –> 00:00:39,520
را اجرا کردید، آن تابع را تمام کنید و سپس
18
00:00:39,520 –> 00:00:41,360
به تابع بعدی بروید و سپس
19
00:00:41,360 –> 00:00:42,800
شما چیزی شبیه به این را می دانید که در آن
20
00:00:42,800 –> 00:00:44,399
ما تابع aaa را داریم
21
00:00:44,399 –> 00:00:47,120
و سپس توابع ezz و همه این
22
00:00:47,120 –> 00:00:48,559
توابع را در بین سمت راست داریم، بنابراین
23
00:00:48,559 –> 00:00:51,280
اگر aaa را فراخوانی
24
00:00:51,280 –> 00:00:52,879
کنیم ابتدا تا هر توابع دیگری فراخوانی شود،
25
00:00:52,879 –> 00:00:53,280
26
00:00:53,280 –> 00:00:56,320
ما بین zzz داریم درست است. به طور همزمان اجرا نمی شود
27
00:00:56,320 –> 00:00:58,320
یا در واقع به
28
00:00:58,320 –> 00:01:01,039
هیچ وجه با هم تداخل دارند، بنابراین به این موضوع در
29
00:01:01,039 –> 00:01:02,399
وب اسکرپینگ درست فکر کنید، بنابراین اگر می خواهید
30
00:01:02,399 –> 00:01:03,600
واقعاً 10 صفحه وب را خراش دهید،
31
00:01:03,600 –> 00:01:06,479
چه کد همزمانی وجود دارد.
32
00:01:06,479 –> 00:01:07,600
o صفحه 1
33
00:01:07,600 –> 00:01:10,400
صفحه 2 صفحه 3 است و به همین ترتیب تا زمانی که کل
34
00:01:10,400 –> 00:01:11,520
کار انجام شود
35
00:01:11,520 –> 00:01:13,280
که فرض کنید هر صفحه یک ثانیه
36
00:01:13,280 –> 00:01:15,040
طول می کشد که تقریباً 10 ثانیه طول می کشد تا در واقع
37
00:01:15,040 –> 00:01:16,240
کامل شود،
38
00:01:16,240 –> 00:01:17,680
اما اگر واقعاً می خواهید کدگذاری ناهمزمان آن را انجام دهید،
39
00:01:17,680 –> 00:01:19,600
40
00:01:19,600 –> 00:01:22,000
می توانید همه اینها را اجرا کنید. همه چیز به
41
00:01:22,000 –> 00:01:23,119
طور
42
00:01:23,119 –> 00:01:24,560
همزمان مانند
43
00:01:24,560 –> 00:01:26,560
جابهجایی بین هر صفحه است،
44
00:01:26,560 –> 00:01:29,840
بنابراین صفحات 1 تا 10 همگی
45
00:01:29,840 –> 00:01:32,640
تقریباً با سرعت یکسانی اجرا میشوند یا کل
46
00:01:32,640 –> 00:01:34,560
برنامه
47
00:01:34,560 –> 00:01:37,200
تقریباً چقدر طول میکشد که کندترین صفحه طول میکشد
48
00:01:37,200 –> 00:01:38,880
که ما فقط در یک صفحه خواهیم دید. لحظه
49
00:01:38,880 –> 00:01:41,280
اما ایده کلی این است که هر
50
00:01:41,280 –> 00:01:42,240
تابع در
51
00:01:42,240 –> 00:01:44,399
کد همزمان، اجرای بعدی را مسدود می کند
52
00:01:44,399 –> 00:01:45,280
53
00:01:45,280 –> 00:01:47,920
و کد ناهمزمان را مسدود می کند، این کار را انجام نمی دهد،
54
00:01:47,920 –> 00:01:48,960
55
00:01:48,960 –> 00:01:50,560
بنابراین اجازه دهید در واقع به یک
56
00:01:50,560 –> 00:01:53,040
مثال همزمان مانند یک مثال عملکردی
57
00:01:53,040 –> 00:01:54,079
58
00:01:54,079 –> 00:01:56,320
که البته در github ما است نگاهی بیندازیم. و من
59
00:01:56,320 –> 00:01:57,759
توصیه می کنم که واقعاً
60
00:01:57,759 –> 00:01:59,200
این کد همزمان را دانلود کنید البته می توانید
61
00:01:59,200 –> 00:02:01,600
آن را نیز متوقف کرده و اجرا کنید،
62
00:02:01,600 –> 00:02:03,600
اما ایده کلی این است که ما
63
00:02:03,600 –> 00:02:05,600
لیستی از زمان های تکرار
64
00:02:05,600 –> 00:02:07,759
داریم که یک تابع داریم. که در واقع
65
00:02:07,759 –> 00:02:10,239
برای هر زمان معینی که
66
00:02:10,239 –> 00:02:11,440
از آن سپری شده یا ثانیه
67
00:02:11,440 –> 00:02:13,520
هایی که به آن منتقل می شود می خوابد و سپس ما
68
00:02:13,520 –> 00:02:14,879
عملکرد اصلی خود را در اینجا داریم که
69
00:02:14,879 –> 00:02:18,080
اساساً شبیه سازی می شود مانند
70
00:02:18,080 –> 00:02:21,200
خراش دادن یا باز شدن هر صفحه و
71
00:02:21,200 –> 00:02:22,000
سپس این
72
00:02:22,000 –> 00:02:24,319
زمان اجرا کامل را اینجا دریافت می کنیم، بنابراین در واقع این کار درست است.
73
00:02:24,319 –> 00:02:26,400
خود یک تابع بسیار ساده است
74
00:02:26,400 –> 00:02:28,160
و البته این یک
75
00:02:28,160 –> 00:02:30,000
تابع مسدودکننده همزمان است
76
00:02:30,000 –> 00:02:32,400
که بسیار شبیه به blocking.pi است، ما
77
00:02:32,400 –> 00:02:34,160
این دو تابع را در اینجا اجرا می کنیم،
78
00:02:34,160 –> 00:02:36,319
این تکرار دقیقاً در اینجا همان کار را انجام می
79
00:02:36,319 –> 00:02:37,360
دهد، بنابراین این
80
00:02:37,360 –> 00:02:39,440
تابع خوابیده
81
00:02:39,440 –> 00:02:41,120
هر چند ثانیه منتظر بماند.
82
00:02:41,120 –> 00:02:43,200
درست در آنجا قرار دهید تا
83
00:02:43,200 –> 00:02:44,239
تمام آن ثانیه
84
00:02:44,239 –> 00:02:45,760
ها را تکرار کنیم و برای آن زمان منتظر بمانیم
85
00:02:45,760 –> 00:02:47,599
تا کل کار
86
00:02:47,599 –> 00:02:49,920
تقریباً 10 ثانیه طول بکشد که من
87
00:02:49,920 –> 00:02:51,599
این را می دانم زیرا زمان های تکرار همین
88
00:02:51,599 –> 00:02:52,800
است،
89
00:02:52,800 –> 00:02:54,640
اما اگر واقعاً این را اجرا کنیم و
90
00:02:54,640 –> 00:02:57,120
ادامه پیدا کند برای همگامسازی با پایتون بالا،
91
00:02:57,120 –> 00:02:59,440
میتوانیم آن تکرارها
92
00:02:59,440 –> 00:03:00,159
را ببینیم،
93
00:03:00,159 –> 00:03:02,560
میتوانیم ببینیم چگونه کد را مسدود میکند، ما
94
00:03:02,560 –> 00:03:03,680
همه آنها را میبینیم،
95
00:03:03,680 –> 00:03:05,599
بنابراین خیلی جالب است، پس چگونه ما
96
00:03:05,599 –> 00:03:08,159
در واقع این کد را به کد همزمان تبدیل
97
00:03:08,159 –> 00:03:10,319
می کنیم درست چگونه می توانیم این 10
98
00:03:10,319 –> 00:03:11,519
ثانیه زمان اجرا
99
00:03:11,519 –> 00:03:13,680
را سرعت بخشیم، در واقع واقعاً آسان است، بنابراین
100
00:03:13,680 –> 00:03:16,319
کپی کردن همه این کدها در async.pi
101
00:03:16,319 –> 00:03:18,239
به معنای واقعی کلمه همان کد است به جز اینکه من
102
00:03:18,239 –> 00:03:19,680
از شر این
103
00:03:19,680 –> 00:03:22,319
تابع اصلی که برای تغییر آن اجرا می شود خلاص شدم. برای
104
00:03:22,319 –> 00:03:24,319
کد ناهمزمان، ما فقط روی همگام مینویسیم
105
00:03:24,319 –> 00:03:27,440
106
00:03:27,440 –> 00:03:30,720
و جلوی هر تابعی
107
00:03:30,720 –> 00:03:32,239
که میروید، اکنون کد ناهمزمان دارید،
108
00:03:32,239 –> 00:03:33,840
چقدر خوب است که
109
00:03:33,840 –> 00:03:36,319
کاملاً درست نیست، بنابراین کاری که من واقعاً
110
00:03:36,319 –> 00:03:37,519
میخواهم انجام دهم این است
111
00:03:37,519 –> 00:03:39,519
که فعلاً تکرار را نادیده بگیریم، بنابراین آن را نظر میدهیم.
112
00:03:39,519 –> 00:03:40,720
113
00:03:40,720 –> 00:03:42,959
و من فقط یک بار با Sleer تماس
114
00:03:42,959 –> 00:03:44,239
115
00:03:44,239 –> 00:03:45,840
میگیرم و فقط به آن میدهم یک
116
00:03:45,840 –> 00:03:48,159
ثانیه و یک تکرار
117
00:03:48,159 –> 00:03:50,400
صفر، همچنین میخواهم از شر آن
118
00:03:50,400 –> 00:03:52,159
ناهمگام جلوی آن تابع خواب خلاص شوم
119
00:03:52,159 –> 00:03:53,599
و ما واقعاً میخواهیم فعلاً روی
120
00:03:53,599 –> 00:03:54,319
اجرای
121
00:03:54,319 –> 00:03:57,040
یک تابع ناهمزمان تمرکز کنید،
122
00:03:57,040 –> 00:03:58,080
بنابراین ما این کار را
123
00:03:58,080 –> 00:04:00,879
داریم که میخواهم انجام دهم این است که اکنون پایتون را در
124
00:04:00,879 –> 00:04:01,519
125
00:04:01,519 –> 00:04:05,040
حالت تعاملی با پایتون i و async
126
00:04:05,040 –> 00:04:08,400
pi اجرا کنیم، بنابراین کاری که میتوانم انجام دهم این است که main را
127
00:04:08,400 –> 00:04:11,519
برای اجرای آن فراخوانی کنم یا میتوانم چیزی را که دریافت کنم پشت
128
00:04:11,519 –> 00:04:12,480
چیزی به نام
129
00:04:12,480 –> 00:04:15,680
corou است شیء tine بنابراین دیگر یک
130
00:04:15,680 –> 00:04:16,160
تابع
131
00:04:16,160 –> 00:04:18,798
نیست، اکنون یک شیء درست است، به این معنی
132
00:04:18,798 –> 00:04:20,000
که ما هنوز
133
00:04:20,000 –> 00:04:23,120
برای اجرای این شی اصلی به چیز دیگری نیاز داریم،
134
00:04:23,120 –> 00:04:26,160
بنابراین چگونه
135
00:04:26,160 –> 00:04:28,080
یک روال مشترک را اجرا کنیم، سوالی
136
00:04:28,080 –> 00:04:29,680
است که چند راه برای انجام آن وجود دارد،
137
00:04:29,680 –> 00:04:31,600
اما اگر تابع اصلی ما باشد، اگر
138
00:04:31,600 –> 00:04:33,440
تابع اصلی ما باشد که
139
00:04:33,440 –> 00:04:36,639
همه توابع دیگر یا
140
00:04:36,639 –> 00:04:37,600
روال های مشترک ما را اجرا کند،
141
00:04:37,600 –> 00:04:40,240
پس چیزی که می خواهیم استفاده
142
00:04:40,240 –> 00:04:42,080
کنیم async
143
00:04:42,080 –> 00:04:45,199
io است، بنابراین ما async io را وارد پایتون می کنیم
144
00:04:45,199 –> 00:04:46,800
و البته می توانیم این را وارد کنیم.
145
00:04:46,800 –> 00:04:49,440
این تابع async را نیز انجام می دهیم
146
00:04:49,440 –> 00:04:53,520
و سپس یک همگام سازی io dot
147
00:04:53,520 –> 00:04:55,759
از یک روال کد را اجرا می کنیم، بنابراین اگر من فقط main را
148
00:04:55,759 –> 00:04:57,440
انجام دادم، این یک روال مشترک نیست، این فقط
149
00:04:57,440 –> 00:04:59,520
خود تابع را توصیف می کند
150
00:04:59,520 –> 00:05:01,840
همانطور که در اینجا می بینیم، ما یک روال مشترک دریافت کردیم که
151
00:05:01,840 –> 00:05:04,000
انتظار می رفت اما آن تابع،
152
00:05:04,000 –> 00:05:06,160
بنابراین ما باید روال کد خود
153
00:05:06,160 –> 00:05:08,720
را با فراخوانی آن تابع مقداردهی اولیه
154
00:05:08,720 –> 00:05:11,120
کنیم و این را اجرا می کنیم و اکنون در واقع اجرا می کند
155
00:05:11,120 –> 00:05:12,720
که در واقع
156
00:05:12,720 –> 00:05:14,639
یک تابع همزمان یا ناهمزمان
157
00:05:14,639 –> 00:05:16,160
و
158
00:05:16,160 –> 00:05:18,479
یک تابع همزمان را به درستی اجرا می کند، بنابراین
159
00:05:18,479 –> 00:05:19,600
هر دوی این موارد را
160
00:05:19,600 –> 00:05:23,120
در کنار r اجرا می کند. مشکلی وجود ندارد،
161
00:05:23,120 –> 00:05:26,320
بنابراین انجام این کار بسیار آسان است،
162
00:05:26,320 –> 00:05:27,280
163
00:05:27,280 –> 00:05:29,919
ابتدا یک روال مشترک را اعلام می کنیم و سپس
164
00:05:29,919 –> 00:05:32,639
باید آن روال کد را
165
00:05:32,639 –> 00:05:36,160
با async io dot اجرا کنیم، اکنون راه های دیگری برای اجرای آن وجود دارد،
166
00:05:36,160 –> 00:05:38,320
167
00:05:38,320 –> 00:05:40,160
بنابراین فقط آن را در نظر داشته باشید، اما برای ما
168
00:05:40,160 –> 00:05:42,000
اهداف
169
00:05:42,000 –> 00:05:44,080
asyncio.run عالی خواهد بود
170
00:05:44,080 –> 00:05:46,639
و برای اکثریت قریب به اتفاق
171
00:05:46,639 –> 00:05:48,639
کارهایی که با آنها به چالش کشیده میشوید عالی خواهد بود،
172
00:05:48,639 –> 00:05:50,960
بنابراین اکنون که به این نتیجه رسیدهایم
173
00:05:50,960 –> 00:05:53,039
بیایید ادامه دهیم و در واقع این
174
00:05:53,039 –> 00:05:54,160
عملکرد
175
00:05:54,160 –> 00:05:56,800
خوابیده را دوباره به ناهمگام تبدیل کنیم. بنابراین من ادامه میدهم و
176
00:05:56,800 –> 00:05:57,440
177
00:05:57,440 –> 00:06:00,240
آن تابع را همگامسازی میکنم، اکنون از اینجا خارج میشوم
178
00:06:00,240 –> 00:06:01,199
و
179
00:06:01,199 –> 00:06:04,560
از آنجایی که run async را
180
00:06:04,560 –> 00:06:06,639
در اینجا اجرا میکنم، ادامه میدهم
181
00:06:06,639 –> 00:06:08,560
و این را دوباره خارج از
182
00:06:08,560 –> 00:06:09,919
حالت تعاملی اجرا
183
00:06:09,919 –> 00:06:12,720
میکنم و چیزی که به دست میآوریم این است هشدار زمان اجرا
184
00:06:12,720 –> 00:06:13,680
برنامه
185
00:06:13,680 –> 00:06:17,199
خواب مشترک هرگز منتظر نبود، بنابراین آنچه که این
186
00:06:17,199 –> 00:06:18,080
به ما نشان می دهد
187
00:06:18,080 –> 00:06:21,280
یک مشکل دیگر است و
188
00:06:21,280 –> 00:06:22,800
چالش دیگری است که
189
00:06:22,800 –> 00:06:25,120
هنگام تماس یا استفاده
190
00:06:25,120 –> 00:06:26,319
از روال های مشترک با آن مواجه خواهید شد به
191
00:06:26,319 –> 00:06:27,960
یاد داشته باشید که واقعاً چگونه مجبور شدیم از asyncio.run برای اجرا استفاده
192
00:06:27,960 –> 00:06:29,360
کنیم.
193
00:06:29,360 –> 00:06:32,400
که چاه اصلی مشترک
194
00:06:32,400 –> 00:06:33,120
برای اجرای
195
00:06:33,120 –> 00:06:35,680
c روالهای o در سایر روالهای مشترک یا
196
00:06:35,680 –> 00:06:37,280
سایر توابع ناهمزمان،
197
00:06:37,280 –> 00:06:39,840
ما در واقع یک انتظار را در آنجا مینامیم، کاری
198
00:06:39,840 –> 00:06:40,639
که قرار است انجام دهد این
199
00:06:40,639 –> 00:06:44,160
است که این تابع را فراخوانی میکنیم و منتظر میمانیم
200
00:06:44,160 –> 00:06:46,880
تا قبل از انجام هر کاری که
201
00:06:46,880 –> 00:06:48,080
بعدی است کامل شود، بنابراین در واقع
202
00:06:48,080 –> 00:06:50,720
آنچه را که بعد از آن میآید مسدود میکند. این
203
00:06:50,720 –> 00:06:51,680
در این
204
00:06:51,680 –> 00:06:54,639
تابع اصلی است، بنابراین بیایید به جلو برویم و این را اجرا کنیم
205
00:06:54,639 –> 00:06:56,400
و اکنون در واقع آن را اجرا کرد،
206
00:06:56,400 –> 00:06:58,639
بنابراین ما در واقع آماده هستیم تا
207
00:06:58,639 –> 00:06:59,840
آن حلقه را امتحان کنیم،
208
00:06:59,840 –> 00:07:01,039
بسیار خوب، بنابراین من میروم و از
209
00:07:01,039 –> 00:07:02,880
شر آن خلاص میشوم و میخواهم
210
00:07:02,880 –> 00:07:04,080
در اینجا از شر این فراخوانی خلاص شوید
211
00:07:04,080 –> 00:07:06,960
و در عوض آن را اینجا قرار می دهم،
212
00:07:06,960 –> 00:07:07,440
بنابراین
213
00:07:07,440 –> 00:07:09,840
این زمان اجرا و درست مانند بسیاری از توابع دیگر،
214
00:07:09,840 –> 00:07:10,560
215
00:07:10,560 –> 00:07:14,560
این خوابگاه در واقع یک مقدار را برمی گرداند،
216
00:07:14,560 –> 00:07:17,840
بنابراین برای به روز رسانی متغیر زمان اجرا جهانی،
217
00:07:17,840 –> 00:07:20,080
باید وزنی را در
218
00:07:20,080 –> 00:07:21,919
مقابل آن فراخوانی کنیم. این تابع خوابیده هنوز
219
00:07:21,919 –> 00:07:23,520
هم چیز دیگری است که باید در مورد آن فکر کرد
220
00:07:23,520 –> 00:07:25,280
که اساساً
221
00:07:25,280 –> 00:07:29,039
نتیجه آن برابر است با آن فراخوانی انتظار
222
00:07:29,039 –> 00:07:31,360
و سپس ما فقط آن را اضافه می کنیم تا دوباره به این صورت است
223
00:07:31,360 –> 00:07:32,400
که آن را
224
00:07:32,400 –> 00:07:33,680
بسیار شبیه زمانی که شما در حال فراخوانی یک
225
00:07:33,680 –> 00:07:35,759
تابع معمولی هستید صدا می زنیم. که آن است باید
226
00:07:35,759 –> 00:07:36,800
منتظر بمانیم
227
00:07:36,800 –> 00:07:39,360
تا تمام شود، اما دوباره به
228
00:07:39,360 –> 00:07:40,240
229
00:07:40,240 –> 00:07:42,800
دلیل موارد غیر همگام، این یک روال مشترک است، بنابراین ما فقط
230
00:07:42,800 –> 00:07:44,160
باید از دستوری
231
00:07:44,160 –> 00:07:46,400
به نام await استفاده کنیم و البته
232
00:07:46,400 –> 00:07:48,000
همیشه به ما میگوید که درست به
233
00:07:48,000 –> 00:07:49,440
ما هشدارهای زمان اجرا را
234
00:07:49,440 –> 00:07:52,080
میدهد. این کارها را انجام ندهید، بنابراین
235
00:07:52,080 –> 00:07:53,360
ما این را ذخیره می کنیم و اکنون آن را ادامه می دهیم
236
00:07:53,360 –> 00:07:54,720
و آن را اجرا می کنیم،
237
00:07:54,720 –> 00:07:55,840
بنابراین شما می خواهید هر
238
00:07:55,840 –> 00:07:58,800
تکرار را مانند قبل انجام دهید،
239
00:07:58,800 –> 00:08:00,400
اما متأسفانه چیزی که در اینجا می بینیم این است که
240
00:08:00,400 –> 00:08:02,000
241
00:08:02,000 –> 00:08:05,199
عملکرد صفر افزایش می یابد. به معنای واقعی کلمه
242
00:08:05,199 –> 00:08:05,840
هیچکدام
243
00:08:05,840 –> 00:08:07,280
درست نیست، باید زمان اجرا را چاپ
244
00:08:07,280 –> 00:08:09,520
245
00:08:09,520 –> 00:08:12,400
میکردیم، اما همانطور که دیدیم به نظر نمیرسد
246
00:08:12,400 –> 00:08:13,120
247
00:08:13,120 –> 00:08:15,520
سرعت اجرای همه چیز را تغییر دهد،
248
00:08:15,520 –> 00:08:17,039
حالا چند دلیل برای این وجود دارد، اما
249
00:08:17,039 –> 00:08:18,479
دلیل اصلی این
250
00:08:18,479 –> 00:08:21,199
است که این زمان خواب نقطهای درست در
251
00:08:21,199 –> 00:08:22,000
اینجا نیست.
252
00:08:22,000 –> 00:08:24,879
روتین و بنابراین مانند قبل اجرا می شود
253
00:08:24,879 –> 00:08:26,080
254
00:08:26,080 –> 00:08:29,199
و همچنین نحوه کار این روش
255
00:08:29,199 –> 00:08:31,680
نیز عالی کار نمی کند، بنابراین بیایید
256
00:08:31,680 –> 00:08:32,719
جلوتر برویم و زمان را تغییر دهیم. خواب
257
00:08:32,719 –> 00:08:35,599
را به یک روال مشترک تبدیل کنیم
258
00:08:35,599 –> 00:08:36,159
زیرا
259
00:08:36,159 –> 00:08:38,240
دوباره چیزی که ما می خواهیم این است که روال های مشترک
260
00:08:38,240 –> 00:08:40,159
را فراخوانی کنیم.
261
00:08:40,159 –> 00:08:43,200
اگر لازم باشد یا اگر باید اتفاق بیفتد، co روتینها را انجام میدهد،
262
00:08:43,200 –> 00:08:46,000
بنابراین در مورد async io میخواهیم
263
00:08:46,000 –> 00:08:47,839
از async io dot sleep استفاده کنیم
264
00:08:47,839 –> 00:08:50,240
و دوباره این یک روال مشترک است، بنابراین میتوانیم
265
00:08:50,240 –> 00:08:51,279
منتظر بمانیم،
266
00:08:51,279 –> 00:08:54,480
فقط ادامه دهید و دوباره این را اجرا کنید
267
00:08:54,480 –> 00:08:58,640
و آنجا را فشار دهید. خیلی
268
00:08:58,640 –> 00:09:01,920
خوبه، بنابراین اینجاست که
269
00:09:01,920 –> 00:09:04,320
امیدوارم احساس میکنم که
270
00:09:04,320 –> 00:09:07,200
نوشتن کد ناهمزمان
271
00:09:07,200 –> 00:09:10,240
چه فایدهای دارد که به مدت 10 ثانیه اجرا شد،
272
00:09:10,240 –> 00:09:11,200
مزیت این است
273
00:09:11,200 –> 00:09:12,959
که ما در واقع میتوانیم نحوه عملکرد این نتایج
274
00:09:12,959 –> 00:09:14,480
را
275
00:09:14,480 –> 00:09:17,040
با گفتن بیایید یک لیست وظایف به من بدهیم، تغییر دهیم. بنابراین
276
00:09:17,040 –> 00:09:18,720
من این را tasks مینامم
277
00:09:18,720 –> 00:09:21,519
و خالی است، بنابراین هر یک از این
278
00:09:21,519 –> 00:09:22,320
روالهای مشترک را
279
00:09:22,320 –> 00:09:25,279
میتوان کاری در نظر گرفت که async io
280
00:09:25,279 –> 00:09:26,560
برای اجرای آن نیاز دارد،
281
00:09:26,560 –> 00:09:29,279
بنابراین اساساً آنچه در اینجا میگویم این است
282
00:09:29,279 –> 00:09:30,880
که میخواهم در تمام این
283
00:09:30,880 –> 00:09:32,080
زمانهای تکرار تکرار
284
00:09:32,080 –> 00:09:34,399
کنم. میخواهید روالهای کد را مقداردهی اولیه کنید،
285
00:09:34,399 –> 00:09:36,560
آن را به یک صف یا لیستی از
286
00:09:36,560 –> 00:09:37,440
وظایفی تبدیل کنید
287
00:09:37,440 –> 00:09:39,680
که باید غیرهمگامسازی شوند،
288
00:09:39,680 –> 00:09:41,920
مهم نیست چگونه و چه زمانی اجرا میشوند، فقط
289
00:09:41,920 –> 00:09:44,160
باید اجرا شوند و سپس من میخواهم
290
00:09:44,160 –> 00:09:45,279
آن را برگردانم.
291
00:09:45,279 –> 00:09:47,760
داده های واقعی به این معنی
292
00:09:47,760 –> 00:09:50,000
است که این حق است این همه چیزی است که در اینجا نیاز دارم
293
00:09:50,000 –> 00:09:52,080
اجازه دهید من از شر اینها خلاص شوم و من می خواهم
294
00:09:52,080 –> 00:09:53,279
به async
295
00:09:53,279 –> 00:09:57,040
io dot create task زنگ
296
00:09:57,040 –> 00:09:59,200
بزنم و می خواهم روال مشترک را در
297
00:09:59,200 –> 00:10:00,080
آنجا اضافه
298
00:10:00,080 –> 00:10:01,519
کنم تا این کار را ایجاد کند
299
00:10:01,519 –> 00:10:04,000
و ما در واقع می توانیم اضافه کنیم آن را
300
00:10:04,000 –> 00:10:08,000
به
301
00:10:12,079 –> 00:10:15,279
task.append خوب است، بنابراین اکنون ما یکسری کار داریم
302
00:10:15,279 –> 00:10:16,079
که میخواهیم
303
00:10:16,079 –> 00:10:19,519
async io اجرا شود، بنابراین مرحله آخر
304
00:10:19,519 –> 00:10:21,480
این است که چیزی به نام
305
00:10:21,480 –> 00:10:23,040
asyncio.gather را
306
00:10:23,040 –> 00:10:25,600
روی همه آن کارها اجرا کنیم تا در واقع
307
00:10:25,600 –> 00:10:26,480
آنها را
308
00:10:26,480 –> 00:10:28,959
با ستاره باز کنیم و کار ادامه دارد. برای اجرای آن
309
00:10:28,959 –> 00:10:30,480
بر روی همه آنها
310
00:10:30,480 –> 00:10:33,279
و این نیز باید منتظر بود
311
00:10:33,279 –> 00:10:34,160
و این
312
00:10:34,160 –> 00:10:36,480
نیز به ما نتیجه میدهد، توضیح میدهم که چرا
313
00:10:36,480 –> 00:10:37,519
در یک ثانیه،
314
00:10:37,519 –> 00:10:40,320
بنابراین فرض کنید نتایج برابر با آن باشد و
315
00:10:40,320 –> 00:10:41,519
ما ادامه میدهیم و آنچه را چاپ میکنیم
316
00:10:41,519 –> 00:10:42,320
نتیجه
317
00:10:42,320 –> 00:10:46,320
این است، اما ایده کلی این است
318
00:10:46,320 –> 00:10:48,399
که اکثر مواقع زمانی که
319
00:10:48,399 –> 00:10:50,160
یک تابع ناهمزمان را فراخوانی
320
00:10:50,160 –> 00:10:53,279
می کنید، کاملاً نیاز به فراخوانی وزن دارید
321
00:10:53,279 –> 00:10:56,160
، تنها تفاوت این است که این کار ایجاد async io
322
00:10:56,160 –> 00:10:56,800
323
00:10:56,800 –> 00:10:59,600
منتظر نمی ماند زیرا
324
00:10:59,600 –> 00:11:00,079
325
00:11:00,079 –> 00:11:02,959
اساساً در حال ایجاد یک صف یا لیست هستید. از
326
00:11:02,959 –> 00:11:04,160
وظایف ناهمزمان
327
00:11:04,160 –> 00:11:06,160
که باید اجرا شود و سپس الف sync
328
00:11:06,160 –> 00:11:07,279
io.gather
329
00:11:07,279 –> 00:11:10,160
در واقع آن وظایف را اجرا و اجرا می کند،
330
00:11:10,160 –> 00:11:14,160
بنابراین اجازه دهید ادامه دهیم و
331
00:11:14,160 –> 00:11:16,000
اجرای این اخطار را مشاهده کنیم، دستورات چاپی
332
00:11:16,000 –> 00:11:17,920
بلافاصله
333
00:11:17,920 –> 00:11:21,680
درست و سپس همه نتایج حاصل
334
00:11:21,680 –> 00:11:23,600
از آن چیزها در مدت کوتاهی منتشر شد،
335
00:11:23,600 –> 00:11:26,000
بنابراین اینها نتایج واقعی
336
00:11:26,000 –> 00:11:28,399
از هر یک هستند. این توابع و
337
00:11:28,399 –> 00:11:30,000
تنها دلیلی که من واقعاً
338
00:11:30,000 –> 00:11:32,320
از آنجا داده دارم این است که این
339
00:11:32,320 –> 00:11:33,040
340
00:11:33,040 –> 00:11:35,600
تابع روال مشترک، این تابع ناهمزمان
341
00:11:35,600 –> 00:11:37,200
در واقع چیزی را برمی گرداند،
342
00:11:37,200 –> 00:11:40,320
بنابراین اگر چیزی را برنمی گرداند،
343
00:11:40,320 –> 00:11:42,240
این نتیجه خالی بود
344
00:11:42,240 –> 00:11:43,519
، در واقع
345
00:11:43,519 –> 00:11:45,600
چیزی نداشت. چیزی را برمی گرداند
346
00:11:45,600 –> 00:11:47,120
و این لیستی از چیزهایی است
347
00:11:47,120 –> 00:11:50,320
که لیستی از آن نتایج را برمی گرداند و
348
00:11:50,320 –> 00:11:52,720
برای هر تکرار متفاوت هستند،
349
00:11:52,720 –> 00:11:53,440
خوب است،
350
00:11:53,440 –> 00:11:55,519
بنابراین معنی آن این است که من
351
00:11:55,519 –> 00:11:57,279
در واقع می توانم زمان اجرا خود را
352
00:11:57,279 –> 00:12:00,399
بر اساس آن نتایج به روز کنم، بنابراین برای
353
00:12:00,399 –> 00:12:03,839
زمان اجرا نتیجه
354
00:12:03,839 –> 00:12:06,160
به نتیجه می رسد. این احتمالاً باید فقط
355
00:12:06,160 –> 00:12:07,279
نتایج باشد
356
00:12:07,279 –> 00:12:10,959
این جمع um است، سپس من در واقع می توانم
357
00:12:10,959 –> 00:12:13,839
آن زمان اجرا را
358
00:12:13,839 –> 00:12:18,079
به اضافه نتیجه زمان اجرا انجام دهم،
359
00:12:18,079 –> 00:12:20,959
خوب، بنابراین ما آن را ذخیره می کنیم و اجازه دهید i را اجرا کنیم
360
00:12:20,959 –> 00:12:22,480
باز هم
361
00:12:22,480 –> 00:12:24,639
و چیزی که باید ببینیم
362
00:12:24,639 –> 00:12:26,800
افزایش عملکرد بسیار زیاد است،
363
00:12:26,800 –> 00:12:30,079
اما هنوز 10 ثانیه را نمیبینیم،
364
00:12:30,079 –> 00:12:32,399
بنابراین کل آن 10 ثانیه دوام آورد،
365
00:12:32,399 –> 00:12:34,079
اما به نظر خوب میرسد
366
00:12:34,079 –> 00:12:35,839
که چرا باید 10 ثانیه اجرا شود
367
00:12:35,839 –> 00:12:37,760
، واقعاً اینطور نیست. 10
368
00:12:37,760 –> 00:12:38,639
ثانیه
369
00:12:38,639 –> 00:12:40,240
خوب در واقع این مشکل
370
00:12:40,240 –> 00:12:42,639
همینجا بود، بنابراین چیزی که ما واقعاً میخواهیم داشته باشیم
371
00:12:42,639 –> 00:12:46,320
این است که نتیجه زمان اجرا برابر
372
00:12:46,320 –> 00:12:49,519
373
00:12:49,519 –> 00:12:51,360
374
00:12:51,360 –> 00:12:52,720
375
00:12:52,720 –> 00:12:55,680
باشد. نتیجه زمان اجرا
376
00:12:55,680 –> 00:12:57,839
بیشتر از زمان اجرا فعلی است،
377
00:12:57,839 –> 00:13:00,240
پس ما در واقع نتیجه زمان اجرا را تنظیم می کنیم،
378
00:13:00,240 –> 00:13:01,040
379
00:13:01,040 –> 00:13:03,920
بنابراین بیایید جلوتر برویم و آن را اجرا کنیم یک
380
00:13:03,920 –> 00:13:04,639
دو
381
00:13:04,639 –> 00:13:08,480
سه چهار پنج، احتمالاً
382
00:13:08,480 –> 00:13:10,320
خیلی سریع حساب کردم زیرا این همان کاری است که من انجام می دهم،
383
00:13:10,320 –> 00:13:12,399
اما در اینجا شما در واقع چهار می گیرید
384
00:13:12,399 –> 00:13:13,440
چند ثانیه
385
00:13:13,440 –> 00:13:15,920
و شما می توانید این را به تنهایی برای نتایج واقعی امتحان کنید،
386
00:13:15,920 –> 00:13:17,600
387
00:13:17,600 –> 00:13:20,000
چیزی که من به دست آوردم، هرچند آنچه در ابتدا به
388
00:13:20,000 –> 00:13:20,959
شما نشان دادم
389
00:13:20,959 –> 00:13:24,560
زمان اجرای واقعی برنامه یا کل
390
00:13:24,560 –> 00:13:27,760
زمان اجرای برنامه بود،
391
00:13:27,760 –> 00:13:30,399
در واقع اجازه دهید این
392
00:13:30,399 –> 00:13:31,279
393
00:13:31,279 –> 00:13:34,959
را زمان اجرای کل محاسبه کنیم.
394
00:13:34,959 –> 00:13:36,720
اگر همزمان
395
00:13:36,720 –> 00:13:40,000
بود واقعاً به این مربوط میشد، پس ادامه دهید
396
00:13:40,000 –> 00:13:42,800
و بگویید global
397
00:13:42,800 –> 00:13:44,639
و اینجاست که ما واقعاً میخواهیم
398
00:13:44,639 –> 00:13:45,839
399
00:13:45,839 –> 00:13:49,920
نتایج زمان اجرا خود را قرار دهیم
400
00:13:49,920 –> 00:13:53,199
و اکنون میتوانیم بگوییم که برای آن
401
00:13:53,199 –> 00:13:56,800
با
402
00:13:56,800 –> 00:13:59,920
مجموع آن اجرا اجرا شد. زمان و
403
00:13:59,920 –> 00:14:02,880
فرض کنید زمان اجرا تقسیم بر کل
404
00:14:02,880 –> 00:14:04,639
زمان اجرا محاسباتی،
405
00:14:04,639 –> 00:14:07,839
اوه، ادامه می دهیم و دوباره آن را اجرا می کنیم
406
00:14:07,839 –> 00:14:10,320
و بنابراین دوباره هر یک از این چیزها
407
00:14:10,320 –> 00:14:11,360
408
00:14:11,360 –> 00:14:14,079
همچنان همان مقدار محاسبه
409
00:14:14,079 –> 00:14:15,279
را می گیرد، درست همان مقدار محاسبه را می طلبد.
410
00:14:15,279 –> 00:14:16,000
411
00:14:16,000 –> 00:14:19,279
40 است، در 40 همان
412
00:14:19,279 –> 00:14:20,000
413
00:14:20,000 –> 00:14:22,639
دوره زمانی اتفاق می افتد، بنابراین این
414
00:14:22,639 –> 00:14:24,399
جادوی کد ناهمزمان است
415
00:14:24,399 –> 00:14:26,399
و همچنین چالش کدهای ناهمزمان
416
00:14:26,399 –> 00:14:28,480
مانند به خاطر سپردن همه
417
00:14:28,480 –> 00:14:29,680
این
418
00:14:29,680 –> 00:14:31,519
موارد کمی مشکل می شود، اما اینجاست
419
00:14:31,519 –> 00:14:32,880
که به تمرین
420
00:14:32,880 –> 00:14:35,199
با یک مثال دنیای واقعی، پس بیایید ادامه دهیم
421
00:14:35,199 –> 00:14:37,760
و این کار را
422
00:14:38,720 –> 00:14:40,079
درست انجام دهیم تا شاید به یاد بیاورید به
423
00:14:40,079 –> 00:14:42,720
روز 12 زمانی که ما خراش همزمان انجام
424
00:14:42,720 –> 00:14:45,680
دادیم و از بسته ای به نام درخواست استفاده
425
00:14:45,680 –> 00:14:47,360
کردیم، متأسفانه ما در واقع نمی
426
00:14:47,360 –> 00:14:50,399
توانیم از بسته برای درخواست استفاده کنیم. انجام
427
00:14:50,399 –> 00:14:52,720
اسکرپینگ ناهمزمان واقعی حداقل نه
428
00:14:52,720 –> 00:14:53,839
شاید در آینده، اما
429
00:14:53,839 –> 00:14:55,600
در حال حاضر چیزی که ما باید استفاده کنیم چیزی
430
00:14:55,600 –> 00:14:58,240
به نام aio http است
431
00:14:58,240 –> 00:15:01,120
که در واقع دو ویژگی را به ما ارائه می دهد
432
00:15:01,120 –> 00:15:02,399
که واقعاً جالب است
433
00:15:02,399 –> 00:15:04,720
یکی از آنها این است که در واقع
434
00:15:04,720 –> 00:15:05,600
درخواست ها را
435
00:15:05,600 –> 00:15:08,959
به آدرس های دیگر به صورت ناهمزمان انجام دهیم.
436
00:15:08,959 –> 00:15:10,000
در واقع برای اجرای
437
00:15:10,000 –> 00:15:12,079
کد ناهمزمان، بنابراین
438
00:15:12,079 –> 00:15:14,480
ما میتوانیم برنامه وب ناهمزمان خود را
439
00:15:14,480 –> 00:15:15,199
440
00:15:15,199 –> 00:15:18,160
با استفاده از aio http نیز ایجاد کنیم، اما البته ما
441
00:15:18,160 –> 00:15:19,920
فقط میخواهیم از آن برای گرفتن یک
442
00:15:19,920 –> 00:15:20,800
آدرس اینترنتی استفاده کنیم،
443
00:15:20,800 –> 00:15:22,959
بنابراین اجازه دهید ببینیم چگونه این کار را انجام
444
00:15:22,959 –> 00:15:24,720
میدهیم و قبل از هر چیز باید آن را نصب کنیم.
445
00:15:24,720 –> 00:15:25,600
با pip bmv
446
00:15:25,600 –> 00:15:29,279
install io http میتوانید pip
447
00:15:29,279 –> 00:15:31,040
install aio http
448
00:15:31,040 –> 00:15:33,440
را نیز انجام دهید، این کاملاً به شما بستگی دارد، اما بعد از
449
00:15:33,440 –> 00:15:34,639
اجرای آن نصب،
450
00:15:34,639 –> 00:15:38,399
شما باید Aiohtp Import Client
451
00:15:38,399 –> 00:15:40,639
Session انجام دهیم، بنابراین کاری که ما میخواهیم انجام دهیم این است که
452
00:15:40,639 –> 00:15:42,240
یک جلسه مشتری را مقدار دهی اولیه
453
00:15:42,240 –> 00:15:45,600
کنیم و برخی از درخواستها را انجام دهیم.
454
00:15:45,600 –> 00:15:47,360
میخواهیم عملکرد اصلی خود را تعریف کنیم
455
00:15:47,360 –> 00:15:47,680
456
00:15:47,680 –> 00:15:51,920
بهطوریکه def main را غیر همگام
457
00:15:51,920 –> 00:15:54,720
کنیم و از این جلسه کلاینت استفاده میکنیم،
458
00:15:54,720 –> 00:15:55,920
459
00:15:55,920 –> 00:15:57,600
بنابراین برای انجام این کار چند
460
00:15:57,600 –> 00:15:59,360
راه مختلف وجود دارد که چگونه آن را انجام دهیم.
461
00:15:59,360 –> 00:16:01,040
ابتدا یک کار بسیار ابتدایی انجام می
462
00:16:01,040 –> 00:16:04,320
دهم و همچنین یک آدرس اینترنتی تنظیم می کنم،
463
00:16:04,320 –> 00:16:07,199
بنابراین آدرس اینترنتی که قرار است استفاده کنم از باکس
464
00:16:07,199 –> 00:16:08,800
آفیس mojo باشد،
465
00:16:08,800 –> 00:16:10,560
بسیار شبیه به کاری که قبلا انجام می دادیم، بنابراین
466
00:16:10,560 –> 00:16:12,000
box office
467
00:16:12,000 –> 00:16:15,600
mojo.com و سپس ما قرار است به
468
00:16:15,600 –> 00:16:19,279
گزارشهای سالانه باکس آفیس سالانه وارد
469
00:16:19,279 –> 00:16:21,440
شویم که البته سال 2020 سالهای خوبی ندارد،
470
00:16:21,440 –> 00:16:22,720
471
00:16:22,720 –> 00:16:25,920
بنابراین بیایید پیش برویم و
472
00:16:25,920 –> 00:16:28,240
ابتدا به آدرس اینترنتی 2019 برویم، بنابراین این اولین موردی است
473
00:16:28,240 –> 00:16:29,759
که از آن استفاده خواهم کرد، من به آن مرجع در آنجا نیازی ندارم.
474
00:16:29,759 –> 00:16:30,480
475
00:16:30,480 –> 00:16:34,079
تنها چیزی که من نیاز دارم این است که سال 2019 خوب باشد،
476
00:16:34,079 –> 00:16:36,000
بنابراین کاری که میخواهم انجام دهم این است که از
477
00:16:36,000 –> 00:16:37,600
جلسه مشتری برای
478
00:16:37,600 –> 00:16:41,040
خواندن محتوای بدنه html
479
00:16:41,040 –> 00:16:43,680
از اینجا استفاده کنم، به خاطر داشته باشید که
480
00:16:43,680 –> 00:16:44,639
این کار
481
00:16:44,639 –> 00:16:47,040
روی وبسایتهای سنگین جاوا اسکریپت کار نخواهد کرد، به
482
00:16:47,040 –> 00:16:48,000
عبارت دیگر اگر
483
00:16:48,000 –> 00:16:51,519
نماد بارگیری را در اینجا ببینید. صفحه بارگیری میشود،
484
00:16:51,519 –> 00:16:53,920
همانطور که میدانید بقیه
485
00:16:53,920 –> 00:16:55,279
صفحه وجود دارد، اما پس از آن
486
00:16:55,279 –> 00:16:56,560
بارگیری انجام میشود،
487
00:16:56,560 –> 00:16:59,040
ما نمیتوانیم آن صفحات را انجام
488
00:16:59,040 –> 00:17:00,639
دهیم، اما من به شما میگویم چگونه این کار را بعداً انجام
489
00:17:00,639 –> 00:17:01,279
490
00:17:01,279 –> 00:17:03,440
دهید یا یک منبع برای یادگیری نحوه انجام
491
00:17:03,440 –> 00:17:04,799
آن، اما در حال حاضر ما می خواهیم جلو برویم
492
00:17:04,799 –> 00:17:06,000
و از
493
00:17:06,000 –> 00:17:08,160
بارگیری همزمان یا نه از جاوا اسکریپت
494
00:17:08,160 –> 00:17:09,439
h استفاده کنیم eavy website
495
00:17:09,439 –> 00:17:12,640
um خوب است، بنابراین ما این آدرس اینترنتی را داریم
496
00:17:12,640 –> 00:17:14,480
و اکنون میخواهیم پیش برویم و
497
00:17:14,480 –> 00:17:16,839
498
00:17:16,839 –> 00:17:20,400
499
00:17:20,400 –> 00:17:23,919
به عنوان جلسه ناهمگام با جلسه مشتری انجام دهیم، بنابراین ممکن است
500
00:17:23,919 –> 00:17:25,199
با دستور with
501
00:17:25,199 –> 00:17:27,439
um آشنا شوید، بنابراین اساساً آنچه قرار است اتفاق بیفتد
502
00:17:27,439 –> 00:17:29,120
این است که شما مقداری کد را در اینجا اجرا کنید
503
00:17:29,120 –> 00:17:30,799
و پس از اتمام، آن
504
00:17:30,799 –> 00:17:32,559
جلسه مشتری متوقف می شود، آن را به
505
00:17:32,559 –> 00:17:35,280
پایان می رساند، بنابراین در واقع درخواست را
506
00:17:35,280 –> 00:17:36,240
در اینجا
507
00:17:36,240 –> 00:17:39,360
انجام می دهیم، سپس کار دیگری را با async با انجام می دهیم
508
00:17:39,360 –> 00:17:41,120
و اکنون از آن جلسه استفاده می کند و
509
00:17:41,120 –> 00:17:42,640
ما می رویم به زودی و اکنون دریافت کنید
510
00:17:42,640 –> 00:17:44,480
البته می توانید از پست استفاده کنید، می توانید
511
00:17:44,480 –> 00:17:47,440
از انواع دیگر روش های http در اینجا استفاده کنید،
512
00:17:47,440 –> 00:17:48,480
اما ما ادامه می دهیم و آن
513
00:17:48,480 –> 00:17:50,400
آدرس اینترنتی را دریافت می کنیم و سپس پاسخ را می گیریم
514
00:17:50,400 –> 00:17:51,039
515
00:17:51,039 –> 00:17:54,480
و آن را به عنوان پاسخ تنظیم می کنیم،
516
00:17:54,480 –> 00:17:57,919
بنابراین در اینجا جلسه اولیه و
517
00:17:57,919 –> 00:18:00,720
سپس پاسخ واقعی در حال حاضر دلیل اینکه ما
518
00:18:00,720 –> 00:18:02,480
کاملاً می خواهیم از این جلسه نیز استفاده کنیم این
519
00:18:02,480 –> 00:18:03,520
520
00:18:03,520 –> 00:18:05,120
است که ما
521
00:18:05,120 –> 00:18:06,400
چندین درخواست خواهیم داشت که قرار نیست
522
00:18:06,400 –> 00:18:06,880
فقط
523
00:18:06,880 –> 00:18:09,600
یک مورد را انجام دهیم، بنابراین خوب است که یک جلسه باز
524
00:18:09,600 –> 00:18:11,039
داشته باشیم که بتوانیم
525
00:18:11,039 –> 00:18:14,320
چندین بار session.get را اجرا کنید تا
526
00:18:14,320 –> 00:18:16,240
سپس f نکته اصلی این
527
00:18:16,240 –> 00:18:19,520
است که بدنه html برابر با یک
528
00:18:19,520 –> 00:18:20,679
529
00:18:20,679 –> 00:18:23,679
پاسخ وزن است. خوب
530
00:18:23,679 –> 00:18:25,360
531
00:18:25,360 –> 00:18:27,919
بخوانید، بنابراین این متن متن html ما خواهد بود، بنابراین میتوانم آن را در اینجا به عنوان یک
532
00:18:27,919 –> 00:18:28,640
رشته خالی بگذارم
533
00:18:28,640 –> 00:18:30,960
و سپس آن را در اینجا تنظیم کنم و سپس
534
00:18:30,960 –> 00:18:32,480
در نهایت ما ادامه میدهیم و
535
00:18:32,4