در این مطلب، ویدئو با asyncio در Python 3 – Robert Smallshire آشنا شوید با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:09,180 –> 00:00:12,309
بنابراین ما به سمت راست می رویم تا
2
00:00:12,309 –> 00:00:16,480
با IO async یا یک سینک کنار بیایم، همانطور که می خواهم
3
00:00:16,480 –> 00:00:17,730
آن را برای همیشه
4
00:00:17,730 –> 00:00:23,740
در Python 3 بنامم، بنابراین ممکن است برای شما جالب
5
00:00:23,740 –> 00:00:25,030
باشد بدانید که یکی از دلایل
6
00:00:25,030 –> 00:00:27,010
روشن ماندن چراغ های لندن این روزها این است که
7
00:00:27,010 –> 00:00:31,090
سفارشی کدهای IO async که
8
00:00:31,090 –> 00:00:34,390
سال گذشته در مورد آن نوشتم که در
9
00:00:34,390 –> 00:00:36,760
حال حاضر روی صدها
10
00:00:36,760 –> 00:00:38,559
کامپیوتر تک بردی که در
11
00:00:38,559 –> 00:00:40,150
تاسیسات صنعتی اطراف لندن کار می کنند
12
00:00:40,150 –> 00:00:42,970
نصب شده است و برق را در تاسیسات صنعتی نظارت
13
00:00:42,970 –> 00:00:44,800
14
00:00:44,800 –> 00:00:48,040
می کنند و با بالا رفتن قیمت برق آن چیزها را روشن و خاموش می کنند.
15
00:00:48,040 –> 00:00:50,079
بنابراین آنچه امروز در مورد آن صحبت خواهم
16
00:00:50,079 –> 00:00:52,800
کرد مبتنی بر تجربه دنیای واقعی
17
00:00:52,800 –> 00:00:57,280
از استفاده از این کتابخانه است و من
18
00:00:57,280 –> 00:00:59,920
اساساً می
19
00:00:59,920 –> 00:01:01,870
خواهم سفر یادگیری را که زمانی که
20
00:01:01,870 –> 00:01:03,579
برای اولین بار با این
21
00:01:03,579 –> 00:01:05,740
کتابخانه آشنا شده بودم تکرار کنم. برای درک آن،
22
00:01:05,740 –> 00:01:07,329
البته اگر در وسط این بحث چراغ ها خاموش شود و
23
00:01:07,329 –> 00:01:08,469
برق قطع شود،
24
00:01:08,469 –> 00:01:12,719
اکنون دقیقاً می دانیم که چه کسی را مقصر بدانیم
25
00:01:13,590 –> 00:01:15,850
کسانی که تازه وارد پایتون هستند یا
26
00:01:15,850 –> 00:01:17,289
پایتون یاد می گیرند، ممکن است به
27
00:01:17,289 –> 00:01:20,950
کتاب های ما علاقه مند باشید. اولین مورد
28
00:01:20,950 –> 00:01:23,079
در همان لحظه منتشر شده است
29
00:01:23,079 –> 00:01:25,600
که شاگرد پایتون برای افرادی که
30
00:01:25,600 –> 00:01:27,549
میتوانند برنامهنویسی کنند، اما نه لزوماً در
31
00:01:27,549 –> 00:01:30,880
32
00:01:30,880 –> 00:01:33,159
33
00:01:33,159 –> 00:01:35,889
34
00:01:35,889 –> 00:01:39,009
پایتون، هدف قرار داده شده است.
35
00:01:39,009 –> 00:01:41,799
ساختار بحث امروز وجود دارد، من میدانم که چه چیزی
36
00:01:41,799 –> 00:01:43,749
ناهمگام است i/o چرا ما به آن اهمیت میدهیم چرا
37
00:01:43,749 –> 00:01:47,649
به آن نیاز داریم چرا موضوعی است که با آن شروع
38
00:01:47,649 –> 00:01:50,459
میکنم سپس به
39
00:01:50,459 –> 00:01:52,689
توضیح روالهای مشترک میپردازیم
40
00:01:52,689 –> 00:01:54,520
و درک اینکه چه روالهای مشترکی
41
00:01:54,520 –> 00:01:56,919
هستند، اساس نحوه عملکرد async
42
00:01:56,919 –> 00:01:59,529
i/o هستند و من در واقع
43
00:01:59,529 –> 00:02:01,959
آنها را بدون async i/o معرفی میکنم و در
44
00:02:01,959 –> 00:02:03,069
واقع میخواهیم چیزی بسازیم
45
00:02:03,069 –> 00:02:04,899
که تا حد زیادی معادل async i/ است. o
46
00:02:04,899 –> 00:02:07,450
بدون استفاده از گیت ها در قاهره به عنوان راهی برای
47
00:02:07,450 –> 00:02:09,399
درک نحوه کار از
48
00:02:09,399 –> 00:02:12,010
اصول اولیه، من به این
49
00:02:12,010 –> 00:02:14,349
ایده اعتقاد دارم که اگرچه انتزاعات
50
00:02:14,349 –> 00:02:16,150
عالی هستند و چه چیزی به ما اجازه می دهد تا
51
00:02:16,150 –> 00:02:19,000
با تلاش بسیار کمتر سیستم های خارق العاده بسازیم
52
00:02:19,000 –> 00:02:20,830
، حداقل باید درک کنید
53
00:02:20,830 –> 00:02:23,290
که چگونه چیزها در واقع کار می کنند یک
54
00:02:23,290 –> 00:02:25,750
سطح انتزاعی پایین تر از جایی
55
00:02:25,750 –> 00:02:27,550
که روزانه کار می کنید، زیرا زمانی که
56
00:02:27,550 –> 00:02:29,170
همه چیز آنطور که شما انتظار دارید کار نمی کند،
57
00:02:29,170 –> 00:02:31,990
شهود مستدلی
58
00:02:31,990 –> 00:02:34,330
در مورد اینکه چرا آنها به شکلی که هستند کار می کنند
59
00:02:34,330 –> 00:02:36,880
، دارید، ما در واقع
60
00:02:36,880 –> 00:02:40,120
ناهمگام را معرفی می کنیم. خود i/o و ادامه دهید
61
00:02:40,120 –> 00:02:42,310
و برخی از چیزهایی را ببینید که لایههای async را
62
00:02:42,310 –> 00:02:43,810
در بالای آن پیادهسازی بسیار ابتدایی قرار میدهند،
63
00:02:43,810 –> 00:02:45,940
اما تا
64
00:02:45,940 –> 00:02:47,200
آخر کار ما واقعاً
65
00:02:47,200 –> 00:02:49,990
در مورد IO در زمینه async
66
00:02:49,990 –> 00:02:51,210
IO صحبت
67
00:02:51,210 –> 00:02:54,820
نمیکنیم، پس چرا به آن نیاز داریم. یک سینک IO چاه IO
68
00:02:54,820 –> 00:02:56,710
تأخیر بالایی دارد مطمئنم همه شما می دانید
69
00:02:56,710 –> 00:02:59,770
که رایانه شما می تواند چندین کار را انجام
70
00:02:59,770 –> 00:03:01,480
دهد در حالی که
71
00:03:01,480 –> 00:03:04,740
این روزها حتی از RAM
72
00:03:04,740 –> 00:03:07,270
برنامه های متوالی منابع را هدر می دهند
73
00:03:07,270 –> 00:03:11,110
که در انتظار عملیات IO و
74
00:03:11,110 –> 00:03:12,370
روش های سنتی هستند. راهحلهایی برای سهولت
75
00:03:12,370 –> 00:03:14,380
پردازش چند رشتهای یا پردازش چندگانه،
76
00:03:14,380 –> 00:03:17,230
سربار منابع زیادی را حمل میکنند. هر
77
00:03:17,230 –> 00:03:19,300
رشته در لینوکس حداقل 8 مگابایت
78
00:03:19,300 –> 00:03:23,920
فضای پشته حافظه مجازی دارد و
79
00:03:23,920 –> 00:03:26,380
سربارهای شناختی بزرگی که دلیل آن سخت
80
00:03:26,380 –> 00:03:27,580
است. زمانی
81
00:03:27,580 –> 00:03:29,800
اتفاق میافتد که چندین اتفاق همزمان رخ میدهد
82
00:03:29,800 –> 00:03:32,560
و سپس از سوراخ خرگوشی قفل کردن پایین میرویم
83
00:03:32,560 –> 00:03:35,050
و همه این
84
00:03:35,050 –> 00:03:38,110
مشکلات پیش میآید و در نهایت
85
00:03:38,110 –> 00:03:40,480
خود مفسر پایتون
86
00:03:40,480 –> 00:03:43,390
حالت تغییرپذیر مشترک دارد که توسط این قفل مفسر معروف جهانی محافظت میشود،
87
00:03:43,390 –> 00:03:45,550
بنابراین اگر از رشتهها استفاده کنیم
88
00:03:45,550 –> 00:03:48,550
در پایتون ما با
89
00:03:48,550 –> 00:03:50,530
چیزی که کپلر دنی از ما میخواهد آن را
90
00:03:50,530 –> 00:03:55,870
تنگنای مفسر جهانی بنامیم، نرم میشویم، بنابراین
91
00:03:55,870 –> 00:03:57,220
بیایید سه تعریف ارائه
92
00:03:57,220 –> 00:03:58,510
کنیم تا مطمئن شویم که همه در یک صفحه
93
00:03:58,510 –> 00:04:03,040
در اینجا هستند، همزمانی مربوط به وظایفی است که
94
00:04:03,040 –> 00:04:07,180
در زمان با هم تداخل دارند، اما از نظر
95
00:04:07,180 –> 00:04:09,310
زمان شروع و پایان با هم تداخل دارند. اگرچه
96
00:04:09,310 –> 00:04:11,230
ما لزوماً هر
97
00:04:11,230 –> 00:04:14,680
کار را در هر لحظه یا همه کارها را در هر
98
00:04:14,680 –> 00:04:17,529
لحظه پیش نمیبریم، در حالی که موازی گرایی
99
00:04:17,529 –> 00:04:19,839
در واقع انجام کارها به طور همزمان است،
100
00:04:19,839 –> 00:04:23,290
بنابراین این کار با چندین
101
00:04:23,290 –> 00:04:25,660
کار در یک زمان در مقابل انجام چندین کار
102
00:04:25,660 –> 00:04:27,900
در یک زمان است، بنابراین مهم است که
103
00:04:27,900 –> 00:04:31,180
تمایز را در اینجا درک کنید، بنابراین async
104
00:04:31,180 –> 00:04:34,210
i/o در مورد همزمانی است
105
00:04:34,210 –> 00:04:37,190
در حالی که رشته ها و چند پردازش برای
106
00:04:37,190 –> 00:04:39,650
موازی واقعی ism به حداقل بیش
107
00:04:39,650 –> 00:04:42,800
از یک هسته در رایانه شما نیاز دارد، بنابراین
108
00:04:42,800 –> 00:04:45,830
همزمان در مقابل متوالی در مقابل
109
00:04:45,830 –> 00:04:48,980
همگام بسیار ناهمزمان بدین معنی است که
110
00:04:48,980 –> 00:04:50,720
ما قبل از ادامه کار نیازی به صبر
111
00:04:50,720 –> 00:04:52,280
نداریم، می توانیم در حالی
112
00:04:52,280 –> 00:04:53,980
که منتظر تکمیل یک کار هستیم در حالی که منتظر هستیم کار دیگری را انجام دهیم.
113
00:04:53,980 –> 00:04:56,780
یا متوالی به این معنی است
114
00:04:56,780 –> 00:04:59,540
که قبل از اینکه بتوانیم به مورد بعدی برویم، باید یک کار واحد را کامل
115
00:04:59,540 –> 00:05:02,300
کنیم،
116
00:05:02,300 –> 00:05:05,390
بنابراین مطمئناً مدت زمان کلی کار
117
00:05:05,390 –> 00:05:08,360
در وضعیت صفحه نمایش باید
118
00:05:08,360 –> 00:05:11,150
طولانی تر شود، جالب است که به نظر من
119
00:05:11,150 –> 00:05:12,950
جالب است که کلمه همزمان در
120
00:05:12,950 –> 00:05:15,950
این مورد استفاده کاملاً
121
00:05:15,950 –> 00:05:17,270
با کلمه همزمان در
122
00:05:17,270 –> 00:05:19,370
زبان های روزمره متناقض است اگر چیزی
123
00:05:19,370 –> 00:05:21,380
در بقیه دنیا همزمان است که به معنای
124
00:05:21,380 –> 00:05:23,120
همزمان است و ما آن را با
125
00:05:23,120 –> 00:05:29,570
معانی متضاد
126
00:05:29,570 –> 00:05:31,070
127
00:05:31,070 –> 00:05:33,860
استفاده می کنیم. یک
128
00:05:33,860 –> 00:05:34,840
تمایز مفید برای
129
00:05:34,840 –> 00:05:38,720
ایجاد وظایف ناهمزمان
130
00:05:38,720 –> 00:05:40,850
فوراً با وعده برخی
131
00:05:40,850 –> 00:05:43,070
نتایج بعدی به نام آینده که ما خواهیم آمد. n
132
00:05:43,070 –> 00:05:44,320
به
133
00:05:44,320 –> 00:05:47,870
توابع بعدی در حالی که توابع غیر مسدود کننده
134
00:05:47,870 –> 00:05:49,700
فوراً برمی گردند اما ممکن است
135
00:05:49,700 –> 00:05:52,310
بدون نتیجه بازگردند، یک نتیجه جزئی یا تمام
136
00:05:52,310 –> 00:05:54,500
نتیجه بله، بنابراین سبک های برنامه نویسی
137
00:05:54,500 –> 00:05:55,880
که شما تمایل به کار با آنها در این
138
00:05:55,880 –> 00:05:58,040
شرایط دارید متفاوت است، بنابراین با
139
00:05:58,040 –> 00:06:00,380
برنامه نویسی ناهمزمان ما
140
00:06:00,380 –> 00:06:03,530
معمولاً یک تماس برگشتی دریافت می کنیم. یا آینده ای با
141
00:06:03,530 –> 00:06:05,150
غیر مسدود کردن، معمولاً باید چیزی را
142
00:06:05,150 –> 00:06:07,550
بکشیم تا زمانی که واقعاً به همه
143
00:06:07,550 –> 00:06:09,650
چیزهایی که میخواهیم خوب برسیم، بنابراین این یک
144
00:06:09,650 –> 00:06:13,490
تمایز مهم است و سپس در
145
00:06:13,490 –> 00:06:15,410
سطح نوع سیستم عامل
146
00:06:15,410 –> 00:06:16,760
میتوانیم به راههای مختلفی
147
00:06:16,760 –> 00:06:17,960
برای ترتیب دادن چیزها فکر کنیم. اتفاق میافتد،
148
00:06:17,960 –> 00:06:21,050
ما چندوظیفهای پیشگیرانه داریم که
149
00:06:21,050 –> 00:06:24,290
در آن زمانبندیکننده وظایف را قطع میکند، این
150
00:06:24,290 –> 00:06:25,910
مستلزم آن است که زمانبندی به طور مداوم در حال اجرا باشد،
151
00:06:25,910 –> 00:06:27,920
بنابراین
152
00:06:27,920 –> 00:06:30,140
برای این کار به موازیسازی سطح سختافزار واقعی نیاز دارید تا به
153
00:06:30,140 –> 00:06:32,090
روشی که سیستمهای عامل آن را انجام میدهند، با استفاده از
154
00:06:32,090 –> 00:06:34,010
تایمرهای سختافزار در CPU برای راهاندازی
155
00:06:34,010 –> 00:06:37,610
تمام وقفهها کار کند.
156
00:06:37,610 –> 00:06:40,010
چندوظیفه ای مشارکتی ما اکنون وظایف
157
00:06:40,010 –> 00:06:42,410
تحت کنترل هستند و باید کنترل را
158
00:06:42,410 –> 00:06:44,300
به زمانبندی برگردانند، اما اگر انجام دهند
159
00:06:44,300 –> 00:06:46,310
کنترل را به زمانبندی بر
160
00:06:46,310 –> 00:06:46,900
161
00:06:46,900 –> 00:06:51,130
نمیگردانیم و کل سیستم مشکلی ندارد، تفاوتهای بسیار مهمی است، بنابراین
162
00:06:51,130 –> 00:06:53,199
IO غیر همگام در مورد چندوظیفهای مشترک است،
163
00:06:53,199 –> 00:07:00,460
بله، بنابراین IO
164
00:07:00,460 –> 00:07:02,789
ناهمزمان به ما اجازه میدهد تا وظایف مشارکتی ناهمزمان را بنویسیم،
165
00:07:02,789 –> 00:07:05,440
اما نکته مهم
166
00:07:05,440 –> 00:07:07,060
در مورد آن این است که به ما امکان میدهد آن را در یک
167
00:07:07,060 –> 00:07:09,130
سبک متوالی که لازم نیست
168
00:07:09,130 –> 00:07:11,620
زیاد در مورد این واقعیت فکر کنیم که چندین
169
00:07:11,620 –> 00:07:13,539
چیز به طور همزمان اتفاق می افتد،
170
00:07:13,539 –> 00:07:16,360
به ما این امکان را می دهد که به طور کامل از
171
00:07:16,360 –> 00:07:18,550
تمام مشکلاتی که معمولاً
172
00:07:18,550 –> 00:07:28,180
با همزمانی مرتبط هستند
173
00:07:28,180 –> 00:07:30,010
کنار بیاییم.
174
00:07:30,010 –> 00:07:31,990
برای معرفی روالهای مشترک توضیح
175
00:07:31,990 –> 00:07:33,639
میدهم که روالهای مشترک چیست، توضیح میدهم که نشان میدهم از این به بعد
176
00:07:33,639 –> 00:07:35,440
چگونه با پایتون کار میکنند،
177
00:07:35,440 –> 00:07:37,870
ما تاکنون هیچ کدی نداشتهایم
178
00:07:37,870 –> 00:07:39,460
از این به بعد تقریباً همه
179
00:07:39,460 –> 00:07:43,720
چیز با کد خوب است. نشان دهید که
180
00:07:43,720 –> 00:07:46,690
روتینهای Co در پایتون چگونه پیادهسازی میشوند و
181
00:07:46,690 –> 00:07:47,650
ما میخواهیم چیزی بسیار
182
00:07:47,650 –> 00:07:49,599
شبیه به async i/o بدون استفاده از
183
00:07:49,599 –> 00:07:52,240
Gatien tayo بسازیم و این به شما نشان
184
00:07:52,240 –> 00:07:54,430
میدهد که هیچ جادوی وجود ندارد و واقعاً
185
00:07:54,430 –> 00:07:59,949
بسیار ساده است. برای انجام این کار، ما
186
00:07:59,949 –> 00:08:05,400
باید محاسباتی داشته باشیم که بتوانیم انجام
187
00:08:05,940 –> 00:08:09,130
دهیم، استفاده از کلمه f
188
00:08:09,130 –> 00:08:12,099
در هر یک از ارائههایی که ارائه دادم برای من ممنوع است،
189
00:08:12,099 –> 00:08:13,840
در غیر این صورت کسی صدای
190
00:08:13,840 –> 00:08:16,960
فیبوناچی klaxon را در توییتر خواهد داد، بنابراین من ترجیح میدهم
191
00:08:16,960 –> 00:08:18,970
از دنباله تره فرنگی استفاده کنم.
192
00:08:18,970 –> 00:08:20,320
ارتباط نزدیکی با دنباله فیبوناچی دارد،
193
00:08:20,320 –> 00:08:23,620
بنابراین در اینجا ما یک
194
00:08:23,620 –> 00:08:26,289
تابع مولد ساده لوکاس داریم که
195
00:08:26,289 –> 00:08:27,940
دنباله لوکاس را تولید می کند و در اینجا من فقط
196
00:08:27,940 –> 00:08:31,449
از آن استفاده می کنم از Atul’s I slice برای بیرون آوردن
197
00:08:31,449 –> 00:08:34,570
10 عدد اول و دنباله لوکاس
198
00:08:34,570 –> 00:08:37,539
ok ما باید از I slice استفاده کنیم. چون
199
00:08:37,539 –> 00:08:40,779
دنباله لوکاس بی نهایت است و این
200
00:08:40,779 –> 00:08:42,250
چیز با خوشحالی برای همیشه حلقه می زند، همانطور که
201
00:08:42,250 –> 00:08:44,290
می بینید در اینجا
202
00:08:44,290 –> 00:08:47,110
هیچ وقت خارج نمی شود، بنابراین ما 10 مورد اول را برش می دهیم،
203
00:08:47,110 –> 00:08:48,790
بنابراین شما خواهید دید که من از
204
00:08:48,790 –> 00:08:51,790
تماس های لوکاس با لوکاس بیرون انداخته شده استفاده می کنم.
205
00:08:51,790 –> 00:08:53,500
بخش بزرگی از صحبت های او به عنوان راهی برای
206
00:08:53,500 –> 00:08:57,240
داشتن مقداری محاسبات برای انجام،
207
00:08:59,270 –> 00:09:01,860
اکنون می خواهیم یک
208
00:09:01,860 –> 00:09:04,350
تابع جستجوی خطی
209
00:09:04,350 –> 00:09:06,000
ساده را معرفی کنیم.
210
00:09:06,000 –> 00:09:07,710
211
00:09:07,710 –> 00:09:10,410
تابع dicate برای هر
212
00:09:10,410 –> 00:09:12,960
آیتم در تکرارپذیر ما گزاره را
213
00:09:12,960 –> 00:09:15,390
در مقابل آیتم آزمایش می کنیم و اگر
214
00:09:15,390 –> 00:09:16,890
به انتهای سبزی رسیدیم بدون
215
00:09:16,890 –> 00:09:18,450
اینکه چیزی مطابق با
216
00:09:18,450 –> 00:09:20,460
گزاره پیدا کنیم، مورد را برمی گردانیم، یک خطای مقدار ایجاد می کنیم ما
217
00:09:20,460 –> 00:09:22,790
پیدا نکردیم همه با من
218
00:09:22,790 –> 00:09:25,020
آیا همه می شنوند برنامه نویسی پایتون
219
00:09:25,020 –> 00:09:27,900
یا P در اینجا جدید به پایتون خوب است، بنابراین
220
00:09:27,900 –> 00:09:30,240
ارزش آن را دارد که تلاش کنم
221
00:09:30,240 –> 00:09:32,400
تا برخی از پایتون را در اینجا توضیح دهم تا
222
00:09:32,400 –> 00:09:35,780
بتوانیم جستجو در دنباله لوکاس را فراخوانی
223
00:09:35,780 –> 00:09:38,580
کنیم و بتوانیم قید خود را منتقل کنیم که
224
00:09:38,580 –> 00:09:40,680
اساساً می گوید شماره اول را به من بدهید
225
00:09:40,680 –> 00:09:42,420
دنباله لوکاس که شش
226
00:09:42,420 –> 00:09:44,550
رقم یا بیشتر دارد، عدد
227
00:09:44,550 –> 00:09:45,960
را به یک رشته تبدیل می کنیم،
228
00:09:45,960 –> 00:09:50,090
طول رشته را به روشی بسیار ارزان اندازه گیری می کنیم، بنابراین
229
00:09:50,090 –> 00:09:53,550
جستجو فقط یک تابع منظم است
230
00:09:53,550 –> 00:09:55,710
، اگر مستقیماً آن را جستجو کنیم، هیچ همزمانی در اینجا اتفاق نمی افتد.
231
00:09:55,710 –> 00:09:58,020
232
00:09:58,020 –> 00:09:59,880
نتیجه را برمیگرداند یا یک
233
00:09:59,880 –> 00:10:01,970
استثنا ایجاد میکند،
234
00:10:01,970 –> 00:10:04,620
بیایید جستجو را در نظر بگیریم و آن را به یک
235
00:10:04,620 –> 00:10:08,190
جستجوی خطی مشارکتی تبدیل
236
00:10:08,190 –> 00:10:11,520
کنیم تا جستجوی مسدودکننده، بنابراین میخواهیم
237
00:10:11,520 –> 00:10:15,000
به صورت دورهای جستجو کنیم ترول کردن به یک
238
00:10:15,000 –> 00:10:18,840
زمانبندی که به زودی خواهید دید
239
00:10:18,840 –> 00:10:21,990
این بسیار آسان است تنها کاری که ما باید انجام دهیم این است
240
00:10:21,990 –> 00:10:23,820
که کلمه yield را در اینجا وارد کنیم، ما
241
00:10:23,820 –> 00:10:27,420
هیچ نتیجه خاصی به دست نمیدهیم، ما فقط میخواهیم نتیجه بدهیم
242
00:10:27,420 –> 00:10:29,310
خوب
243
00:10:29,310 –> 00:10:34,140
حالا جستجو یک تابع معمولی نیست.
244
00:10:34,140 –> 00:10:36,750
همچنین نام آن را به جستجوی غیر همگام تغییر
245
00:10:36,750 –> 00:10:38,640
میدهم تا به ما یادآوری کنم که اکنون یک
246
00:10:38,640 –> 00:10:44,070
حیوان کاملاً متفاوت است، بنابراین بیایید
247
00:10:44,070 –> 00:10:47,700
جستجوی غیر همگام را در لوکاس وارد کنیم و
248
00:10:47,700 –> 00:10:51,090
جستجوی غیر همگام را همانطور که قبلا انجام دادیم
249
00:10:51,090 –> 00:10:52,680
فراخوانی
250
00:10:52,680 –> 00:10:53,790
میکنیم. d در واقع آن را برای
251
00:10:53,790 –> 00:10:55,410
هزاران تکرار اجرا می کنیم، ما فقط آن را
252
00:10:55,410 –> 00:11:00,690
برای چند مورد برنده می کنیم، بنابراین آنچه که G درست است G
253
00:11:00,690 –> 00:11:01,980
چیزی نیست که با جستجوی سمت راست به دنبال آن هستیم
254
00:11:01,980 –> 00:11:06,330
G یک شی مولد است،
255
00:11:06,330 –> 00:11:08,520
درست یک شی وجود دارد که
256
00:11:08,520 –> 00:11:09,990
257
00:11:09,990 –> 00:11:12,209
تابع و حالت در حال اجرا را محصور می کند. از آن
258
00:11:12,209 –> 00:11:14,690
تابع، ما هنوز شروع به
259
00:11:14,690 –> 00:11:18,240
تکرار آن چیز نکردهایم، اما ژنراتور
260
00:11:18,240 –> 00:11:21,950
کد و وضعیت
261
00:11:21,950 –> 00:11:27,959
آن فراخوانی خاص را کپسوله میکند، بنابراین
262
00:11:27,959 –> 00:11:29,700
اکنون تابع مولد نامیده میشود
263
00:11:29,700 –> 00:11:32,339
و برای اجرای آن تا
264
00:11:32,339 –> 00:11:34,890
اولین بازده مورد نیاز است. d برای تکرار آن و
265
00:11:34,890 –> 00:11:36,839
جایی که در پایتون تکرار میکنیم توسط Q
266
00:11:36,839 –> 00:11:39,510
میتوان در تابع بعدی ساخته شود، بنابراین G بعدی را انجام دهید
267
00:11:39,510 –> 00:11:41,130
و هیچ اتفاقی نمیافتد، هر چیزی را به عقب پیوند میدهیم
268
00:11:41,130 –> 00:11:43,140
آنچه اتفاق افتاده است، این تابع است، زیرا
269
00:11:43,140 –> 00:11:45,800
من تا زمانی که بازدهی را انجام میدهم چیزی به دست نمیآید
270
00:11:45,800 –> 00:11:48,600
و در اینجا چیزی برمیگردانیم.
271
00:11:48,600 –> 00:11:50,490
بسیار خوب، پس فقط ما آن را مجبور کردیم یک
272
00:11:50,490 –> 00:11:53,160
تکرار از آن تابع را اجرا کند، خوب حالا
273
00:11:53,160 –> 00:11:54,600
میتوانیم آن را اجرا کنیم که تکرار بعدی آن تابع را اجرا کند،
274
00:11:54,600 –> 00:11:56,940
بنابراین شما بفرستید ما بعد را
275
00:11:56,940 –> 00:12:00,390
با تکرار یک حلقه دیگر در آن
276
00:12:00,390 –> 00:12:06,149
حلقه جستجو فراخوانی کنیم، بله، چه جالب
277
00:12:06,149 –> 00:12:08,250
و قابل توجه است در مورد این است که در حالی که
278
00:12:08,250 –> 00:12:10,440
ما در حال پیشرفت این تابع در
279
00:12:10,440 –> 00:12:12,570
اینجا هستیم، میتوانیم کارهای دیگر را همزمان انجام
280
00:12:12,570 –> 00:12:15,510
دهیم، من میتوانم hello world را اکنون
281
00:12:15,510 –> 00:12:19,709
در حالی که آن تابع در حال اجرا است چاپ کنم، سپس
282
00:12:19,709 –> 00:12:22,440
میتوانم به اجرا برگردم و
283
00:12:22,440 –> 00:12:26,430
جستجوی خود را برای بعدی بعدی بعدی پیش ببرم.
284
00:12:26,430 –> 00:12:33,329
در پایان
285
00:12:33,329 –> 00:12:35,880
سقوط سقوط کنید، بنابراین در نهایت میتوانیم آیتم را برگردانیم
286
00:12:35,880 –> 00:12:39,420
، اکنون آیتم را به طور معمول در
287
00:12:39,420 –> 00:12:41,610
توابع ژنراتور در پایتون پیدا میکنیم که
288
00:12:41,610 –> 00:12:44,360
مقداری مقدار داده میشود و هیچ
289
00:12:44,360 –> 00:12:46,829
چیز درستی
290
00:12:46,829 –> 00:12:48,450
برنمیگردانیم. ng و ما
291
00:12:48,450 –> 00:12:51,060
یک آیتم را برمی گردانیم و وقتی
292
00:12:51,060 –> 00:12:53,690
مقداری را از یک تابع
293
00:12:53,690 –> 00:12:55,920
مولد برمی گردانید، توابع تولید کننده که برمی گردند، اگر مقداری را برگردانید،
294
00:12:55,920 –> 00:12:57,779
آنچه را که یک استثنای توقف تکرار نامیده می شود، افزایش
295
00:12:57,779 –> 00:13:00,720
می دهد، پایتون
296
00:13:00,720 –> 00:13:03,690
مقدار بازگشتی را در بار بار
297
00:13:03,690 –> 00:13:06,810
آن شی استثنای توقف تکرار بسته بندی می کند.
298
00:13:06,810 –> 00:13:10,020
نوعی غیرمنتظره و عجیب است و
299
00:13:10,020 –> 00:13:12,839
به ندرت در پایتون استفاده می شود، اما ما فقط
300
00:13:12,839 –> 00:13:14,610
از آن برای تأثیرگذاری بسیار خوب
301
00:13:14,610 –> 00:13:18,020
و جستجوی همزمان استفاده کرده ایم،
302
00:13:18,550 –> 00:13:21,400
همانطور که می بینید
303
00:13:21,400 –> 00:13:22,690
کار کردن با آن بسیار ناخوشایند است، آیا
304
00:13:22,690 –> 00:13:25,960
این کاملاً ناخوشایند است آشفته است اما در تئوری جستجوی
305
00:13:25,960 –> 00:13:27,910
همزمان داریم یا در عمل جستجوی همزمان داریم،
306
00:13:27,910 –> 00:13:31,390
بنابراین جستجوی همگام یک
307
00:13:31,390 –> 00:13:33,760
تابع مولد است که جستجوی async را فراخوانی میکند همیشه
308
00:13:33,760 –> 00:13:35,680
یک شی مولد را برمیگرداند، ما
309
00:13:35,680 –> 00:13:39,490
جستجو را با فراخوانی بعدی روی
310
00:13:39,490 –> 00:13:41,680
شی مولد انجام میدهیم و نتیجه نهایی این است که
311
00:13:41,680 –> 00:13:44,590
نقل قول بازگردانده میشود و من از
312
00:13:44,590 –> 00:13:47,560
نقل قول های ترسناک برای واقعی استفاده می کنم در اینجا به عنوان یک
313
00:13:47,560 –> 00:13:53,980
بار استثنا برگردانده
314
00:13:53,980 –> 00:13:55,870
315
00:13:55,870 –> 00:13:58,330
316
00:13:58,330 –> 00:14:03,420
می شود. وقت خود را تلف کنید، خوب، بنابراین
317
00:14:03,420 –> 00:14:05,830
چون کار کردن با آن بسیار سخت است،
318
00:14:05,830 –> 00:14:10,450
اجازه دهید آن را کمی در یک کار جمع کنیم، بنابراین
319
00:14:10,450 –> 00:14:12,880
یک کار بسیار است، این کل
320
00:14:12,880 –> 00:14:16,510
تکلیف کدها است درست، یک کلاس با
321
00:14:16,510 –> 00:14:18,550
یک مقدار اولیه است که روتینی
322
00:14:18,550 –> 00:14:20,590
مانند تابع ژنراتور که همین الان
323
00:14:20,590 –> 00:14:24,310
داشتیم روتین Co را به آن منتقل کردیم
324
00:14:24,310 –> 00:14:27,040
و یک شناسه دارد و باید
325
00:14:27,040 –> 00:14:30,460
شناسه را در اینجا یک شناسه کلاس داشته باشیم که هر بار آن را افزایش
326
00:14:30,460 –> 00:14:33,030
می دهیم و فقط شناسه بعدی را
327
00:14:33,030 –> 00:14:35,950
به هر کار اختصاص می دهیم تا کار 0 را دریافت کنیم.
328
00:14:35,950 –> 00:14:38,890
تست متولد شده است – این فقط یک پوشش بسیار نازک
329
00:14:38,890 –> 00:14:43,810
در اطراف روال است، اکنون ما به یک
330
00:14:43,810 –> 00:14:46,510
زمانبندی نیاز داریم تا این روال را برای ما اجرا کند،
331
00:14:46,510 –> 00:14:48,370
زیرا انجام تمام این
332
00:14:48,370 –> 00:14:50,680
موارد تکرار توقف بعدی با دست بسیار مشکل است،
333
00:14:50,680 –> 00:14:55,830
بنابراین زمانبندی ما بسیار ساده است
334
00:14:55,830 –> 00:14:59,340
، زمانبندی شامل یک صف است. از
335
00:14:59,340 –> 00:15:03,010
وظایف قابل اجرا و شامل دو
336
00:15:03,010 –> 00:15:05,080
فرهنگ لغت است که حاوی
337
00:15:05,080 –> 00:15:08,050
نتایج کارهای تکمیل شده یا استثناهایی
338
00:15:08,050 –> 00:15:10,000
است که توسط کارهایی که
339
00:15:10,000 –> 00:15:12,300
شکست خورده
340
00:15:12,540 –> 00:15:15,570
اند ایجاد شده اند، ما یک تبلیغ تابع برای روتین داریم
341
00:15:15,570 –> 00:15:17,520
که اساساً یک wrapper
342
00:15:17,520 –> 00:15:20,250
است و در واقع روال را در یک t می پیچد. بپرسید
343
00:15:20,250 –> 00:15:23,130
و کار را به صف اضافه می کند
344
00:15:23,130 –> 00:15:27,150
و شناسه وظیفه را اکنون بسیار ساده برمی گرداند
345
00:15:27,150 –> 00:15:30,150
و سپس ما این تابع را
346
00:15:30,150 –> 00:15:34,290
در اینجا اجرا می کنیم تا تکمیل شود که در واقع قرار است
347
00:15:34,290 –> 00:15:39,270
وظایف را اجرا کند، این یک جور
348
00:15:39,270 –> 00:15:41,280
ساده است و به عنوان یک ظرافت خاص نیز
349
00:15:41,280 –> 00:15:44,250
فکر می کنم در حالی که وجود دارد وظایفی که باید
350
00:15:44,250 –> 00:15:49,500
در صف اجرا شوند، اولین وظیفه را از جلوی صف بردارید.
351
00:15:49,500 –> 00:15:51,690
352
00:15:51,690 –> 00:15:53,490
353
00:15:53,490 –> 00:15:57,030
354
00:15:57,030 –> 00:16:00,690
355
00:16:00,690 –> 00:16:03,120
خوب شناخته شده است،
356
00:16:03,120 –> 00:16:05,880
اگر با ارسال اشعه ایکس خود،
357
00:16:05,880 –> 00:16:08,010
تکرار توقف با وظایف به پایان رسیده باشد
358
00:16:08,010 –> 00:16:10,170
، نتیجه ای را که باید از پذیرش بگیریم، برمی گرداند،
359
00:16:10,170 –> 00:16:13,050
بنابراین استثنا
360
00:16:13,050 –> 00:16:15,120
به صورت توقف گرفته می شود،
361
00:16:15,120 –> 00:16:17,550
بار ارزش را از استثنا می
362
00:16:17,550 –> 00:16:20,960
گیریم و آن را در فرهنگ لغت می چسبانیم.
363
00:16:20,960 –> 00:16:24,180
نتایج برای کارهای تمام شده اگر
364
00:16:24,180 –> 00:16:26,790
استثنای دیگری دریافت کنیم،
365
00:16:26,790 –> 00:16:28,290
تکرار تکرار نیست، چیز دیگری اشتباه شده است،
366
00:16:28,290 –> 00:16:30,870
ما اساساً دوباره همین کار را انجام می دهیم به جز اینکه
367
00:16:30,870 –> 00:16:32,520
شی استثنا را به
368
00:16:32,520 –> 00:16:37,890
وظایف ناموفق فرهنگ لغت می چسبانیم. خوب، در غیر این صورت، بلوکهای
369
00:16:37,890 –> 00:16:39,690
روی بلوکهای آزمایشی چیزی است که
370
00:16:39,690 –> 00:16:41,880
مخصوص پایتون است و کمی کنجکاو
371
00:16:41,880 –> 00:16:44,130
میشوید که در نهایت در مرحله دیگری قرار میگیرید،
372
00:16:44,130 –> 00:16:48,450
اگر امتحان موفقیتآمیز بود، در نهایت سعی میکنید،
373
00:16:48,450 –> 00:16:50,880
این کمترین چیز بصری در
374
00:16:50,880 –> 00:16:53,010
کل زبان است و من فقط باید بگویم
375
00:16:53,010 –> 00:16:55,010
پس اگر
376
00:16:55,010 –> 00:16:58,020
با موفقیت تکرار کردیم و باز نگردید، ما به اینجا میآییم،
377
00:16:58,020 –> 00:17:00,600
ما ادعا میکنیم که بازدهی ندارد،
378
00:17:00,600 –> 00:17:02,400
زیرا اگر ما کسی
379
00:17:02,400 –> 00:17:03,690
چیز دیگری را ارائه دهیم
380
00:17:03,690 –> 00:17:06,449
، طبق قوانین بازی نمیکند، انتظار داریم که آنها طبق قوانین بازی کنند. ما
381
00:17:06,449 –> 00:17:09,300
پیام را چاپ می کنیم و وظیفه را می
382
00:17:09,300 –> 00:17:12,630
گیریم و آن را در پشت یک
383
00:17:12,630 –> 00:17:15,959
صف می چسبانیم تا دوباره دور بزنیم و بنابراین
384
00:17:15,959 –> 00:17:18,119
همیشه کار را از جلو بیرون می
385
00:17:18,119 –> 00:17:19,859
آوریم و اگر نیاز به خواندن دوباره داشت آن را به
386
00:17:19,859 –> 00:17:22,230
عقب می چسبانیم. از طرف دیگر، کاملاً
387
00:17:22,230 –> 00:17:25,230
ظرافت خاصی دارد، من فکر میکنم
388
00:17:25,230 –> 00:17:28,140
این کل زمانبندی برای
389
00:17:28,140 –> 00:17:30,680
روالهای مشترک است.
390
00:17:31,580 –> 00:17:33,530
391
00:17:33,530 –> 00:17:38,250
392
00:17:38,250 –> 00:17:41,850
393
00:17:41,850 –> 00:17:44,670
به طوری که
394
00:17:44,670 –> 00:17:46,560
در دنباله لوکاس این پیش بینی
395
00:17:46,560 –> 00:17:48,840
اولین عدد را با شش رقم یا بیشتر خوردیم
396
00:17:48,840 –> 00:17:52,530
و اجرا را تا تکمیل صدا زدیم و ما
397
00:17:52,530 –> 00:17:54,150
فقط یک کار داریم، بنابراین فقط به
398
00:17:54,150 –> 00:17:57,410
دور آن می چرخد در حالی که حلقه در حال اجرای وظیفه صفر بع
399
00:17:57,410 –> 00:18:01,340
ی بعدی بعدی بعدی بعدی بعدی است و در نهایت اس
400
00:18:01,340 –> 00:18:03,780
ثنا را افزایش می دهد و نت
401
00:18:03,780 –> 00:18:06,900
جه را ثبت می کند. اینجا و سپس میتوانیم وارد
402
00:18:06,900 –> 00:18:09,060
شویم و نتایج را از آن
403
00:18:09,060 –> 00:18:11,820
فرهنگ لغت بیرون بیاوریم، این برای task 0 است
404
00:18:11,820 –> 00:18:14,880
که تنها کاری است که ایجاد کردهایم، بنابراین ما یک برنامه زمانی داریم
405
00:18:14,880 –> 00:18:17,700
که میتواند یک کار را اجرا کند،
406
00:18:17,700 –> 00:18:24,180
اما البته میتوانیم بیش از یک کار را یاد بگیریم.
407
00:18:24,180 –> 00:18:25,770
بنابراین با استفاده از همان
408
00:18:25,770 –> 00:18:27,600
نمونه زمانبندی، یک کار دیگر اضافه
409
00:18:27,600 –> 00:18:30,570
میکنیم، فقط دو جستجو انجام میدهیم، یک
410
00:18:30,570 –> 00:18:32,280
عدد لوکاس چهار رقمی در ماه با اعداد
411
00:18:32,280 –> 00:18:34,920
نه رقمی لوکاس انجام
412
00:18:34,920 –> 00:18:35,580
413
00:18:35,580 –> 00:18:39,420
میدهیم.
414
00:18:39,420 –> 00:18:41,300
415
00:18:41,300 –> 00:18:44,250
کامل می شود اول
416
00:18:44,250 –> 00:18:46,830
نتیجه نصف دو را می گیریم کمی بیشتر طول می کشد سپس
417
00:18:46,830 –> 00:18:49,670
نتیجه دوم را در اینجا می گیریم
418
00:18:49,670 –> 00:18:54,900
بسیار خوب است اجرای همزمان بسیار ساده
419
00:18:54,900 –> 00:18:59,070
با استفاده از روال های مشترک پیاده سازی شده
420
00:18:59,070 –> 00:19:03,270
با استفاده از ژنراتورهای پایتون بنابراین می توانید این کار را
421
00:19:03,270 –> 00:19:05,130
در نسخه های پایتون انجام دهید برگردیم به
422
00:19:05,130 –> 00:19:07,950
دوست داشتن دو نقطه چهار سه یا چیزی که
423
00:19:07,950 –> 00:19:11,580
بله خیلی به عقب خوب است،
424
00:19:11,580 –> 00:19:14,910
بنابراین اعداد لوکاس خوب است، اما ما باید
425
00:19:14,910 –> 00:19:16,290
واقعاً این را نشان دهیم، ما به
426
00:19:16,290 –> 00:19:19,560
محاسبات کمی سنگین تری نیاز داریم، بنابراین و همچنین
427
00:19:19,560 –> 00:19:21,630
برای نشان دادن برخی از مشکلاتی که
428
00:19:21,630 –> 00:19:23,310
در برنامه نویسی همزمان با آن مواجه می شوید، به
429
00:19:23,310 –> 00:19:25,170
مقداری سنگین تر نیاز داریم. محاسبات، بنابراین در اینجا من
430
00:19:25,170 –> 00:19:29,640
Nadi is Primer is
431
00:19:29,640 –> 00:19:31,940
432
00:19:31,940 –> 00:19:34,770
433
00:19:34,770 –> 00:19:37,170
434
00:19:37,170 –> 00:19:40,530
435
00:19:40,530 –> 00:19:42,990
prime is a prime testing ality.
436
00:19:42,990 –> 00:19:44,640
به این
437
00:19:44,640 –> 00:19:45,690
دلیل است که به طرز وحشتناکی ناکارآمد است،
438
00:19:45,690 –> 00:19:47,610
اگرچه من میتوانم تعیین کننده
439
00:19:47,610 –> 00:19:49,350
اصلی آن را در آزمایش نیم ثانیه
440
00:19:49,350 –> 00:19:52,410
آزمایش کنم، ویژگی اولیه آن
441
00:19:52,410 –> 00:19:54,600
نیم هفته طول میکشد، درست زمان زیادی طول میکشد
442
00:19:54,600 –> 00:19:57,300
درست است، شاید نیمی از هفته باید انجام
443
00:19:57,300 –> 00:19:58,890
دهم، اما باید این کار را انجام دهم. 1.5 میلیارد
444
00:19:58,890 –> 00:20:04,740
اعداد نیز برای این که به درستی برگردند
445
00:20:04,740 –> 00:20:05,429
، مدتی طول می کشد
446
00:20:05,429 –> 00:20:10,530
پایتون زبان سریعی نیست، خب،
447
00:20:10,530 –> 00:20:12,540
این یک روال مشترک دیگر است که بسیار
448
00:20:12,540 –> 00:20:14,940
شبیه به روال مشترک جستجو است. به جز
449
00:20:14,940 –> 00:20:17,340
اینکه همه نتایج منطبق را چاپ می کند خوب است،
450
00:20:17,340 –> 00:20:19,590
بنابراین ما فقط هر چیزی را
451
00:20:19,590 –> 00:20:21,179
که مطابقت دارد حلقه می زنیم و یک
452
00:20:21,179 –> 00:20:23,760
آیتم را پیدا کرده ایم و اکنون به زمانبندی تسلیم می
453
00:20:23,760 –> 00:20:25,260
شویم، بنابراین ما فقط به
454
00:20:25,260 –> 00:20:32,790
دنباله حلقه می زنیم، بنابراین در اینجا می رویم ناهمگام وارد می کنیم
455
00:20:32,790 –> 00:20:35,910
چاپ مسابقات اول است و lucus ما
456
00:20:35,910 –> 00:20:38,940
زمانبندی را تنظیم میکنیم، یک کار اضافه میکنیم، بنابراین
457
00:20:38,940 –> 00:20:41,670
تمام اعداد را از دنباله luca چاپ کنید
458
00:20:41,670 –> 00:20:48,179
که اول هستند، ما میرویم به
459
00:20:48,179 –> 00:20:51,030
4 میرسیم، اول 3 نیست و غیره و
460
00:20:51,030 –> 00:20:55,860
اعداد اول را با افزایش شکافها دریافت میکنیم.
461
00:20:55,860 –> 00:21:00,390
همانطور که دنباله ok را بالا می بریم، به طوری
462
00:21:00,390 –> 00:21:03,650
که این یک کار است که فقط
463
00:21:03,650 –> 00:21:06,210
وظیفه صفر را اجرا می کند، اکنون
464
00:21:06,210 –> 00:21:08,700
پیام دیگری می نویسیم و کار دیگری برای اجرا.
465
00:21:08,700 –> 00:21:10,920
بنابراین من این کار را در اینجا به نام پیام تکراری پخته ام.
466
00:21:10,920 –> 00:21:13,410
467
00:21:13,410 –> 00:21:16,940
یک رشته در یک بازه زمانی
468
00:21:16,940 –> 00:21:22,260
در حال حاضر، بنابراین حلقه بی نهایت این کار هرگز
469
00:21:22,260 –> 00:21:24,179
کامل نمی شود، فقط برای همیشه پیام را اجرا می کند
470
00:21:24,179 –> 00:21:26,490
و سپس این
471
00:21:26,490 –> 00:21:31,320
اساساً یک خواب درست است، ما فقط صبر می کنیم
472
00:21:31,320 –> 00:21:37,020
تا مدت زمان منقضی شود، سپس
473
00:21:37,020 –> 00:21:38,820
از حلقه while خارج می شویم و دوباره دور می شویم
474
00:21:38,820 –> 00:21:41,190
و چاپ پیام مجدداً بسیار
475
00:21:41,190 –> 00:21:43,250
ساده
476
00:21:43,250 –> 00:21:45,900
است تا این تعاونی را ایجاد کنیم، فقط باید
477
00:21:45,900 –> 00:21:53,030
بازده را در حلقه داخلی اضافه کنیم و
478
00:21:53,300 –> 00:21:56,190
شهروندان خوب بودن، نام آن را به عنوان یک پیام تکراری همگامسازی تغییر میدهند،
479
00:21:56,190 –> 00:21:58,580
480
00:21:58,580 –> 00:22:04,350
اگر
481
00:22:04,350 –> 00:22:06,000
فاصله زمانی یک عدد بسیار کوچک باشد مانند
482
00:22:06,000 –> 00:22:10,250
صفر همه، یک اشکال ظریف در اینجا وجود دارد. درست است، این هرگز
483
00:22:10,250 –> 00:22:12,270
خوب عمل نمی کند، زیرا شما
484
00:22:12,270 –> 00:22:14,310
485
00:22:14,310 –> 00:22:15,990
486
00:22:15,990 –> 00:22:17,670
487
00:22:17,670 –> 00:22:24,450
488
00:22:24,450 –> 00:22:25,980
وارد اینجا خواهید شد. باید
489
00:22:25,980 –> 00:22:29,690
اطمینان حاصل کنید که همه روالهای مشترک شما و
490
00:22:29,690 –> 00:22:32,400
حتی اگر من کد IO غیر همگام نمینویسم،
491
00:22:32,400 –> 00:22:35,250
این قانون در مورد REO غیر همگامسازی اعمال میشود،
492
00:22:35,250 –> 00:22:37,280
باید اطمینان حاصل کنید که همه روالهای مشترک شما
493
00:22:37,280 –> 00:22:39,870
494
00:22:39,870 –> 00:22:44,580
فوراً نتیجه میدهند یا اکنون نتیجه میدهند، بنابراین باید
495
00:22:44,580 –> 00:22:46,440
این کار را انجام دهید. در اینجا کاملاً مراقب جریان کنترل باشید
496
00:22:46,440 –> 00:22:48,360
و مطمئن شوید که حداقل یک بار تسلیم شده اید، در
497
00:22:48,360 –> 00:22:49,430
498
00:22:49,430 –> 00:22:52,400
غیر این صورت کل سیستم را آویزان خواهید کرد،
499
00:22:52,400 –> 00:22:54,270
بنابراین ما باید این بازده را در
500
00:22:54,270 –> 00:23:06,060
مکان مناسبی که وجود دارد دریافت کنیم، بنابراین بیایید این عملکرد را که وارد می کنیم ببینیم.
501
00:23:06,060 –> 00:23:08,320
502
00:23:08,320 –> 00:23:10,900
چیزهایی که ما نیاز داریم برای
503
00:23:10,900 –> 00:23:14,900
نمونه یک برنامهریز یک کار را برنامهریزی میکنیم که
504
00:23:14,900 –> 00:23:22,400
من زمان زیادی را در فرودگاهها میگذرانم اگر
505
00:23:22,400 –> 00:23:24,110
اخیراً از همه اینها صرف نظر کرده باشم، میگوید
506
00:23:24,110 –> 00:23:27,040
توجه داشته باشید
507
00:23:29,800 –> 00:23:33,170
که قدمتان خوب است، بنابراین ما راهاندازی کردهایم یک
508
00:23:33,170 –> 00:23:35,540
بار بدون مراقبت هر دو بار از بین میرود و
509
00:23:35,540 –> 00:23:37,190
یک ثانیه و نیم و ما میخواهیم
510
00:23:37,190 –> 00:23:39,170
اعداد اول را از دنباله لوکاس محاسبه کنیم و
511
00:23:39,170 –> 00:23:45,679
همزمان با اتمام اجاره،
512
00:23:45,679 –> 00:23:47,510
پیام خود را بعد از دو و نیم ثانیه دریافت میکنیم
513
00:23:47,510 –> 00:23:49,850
، در ابتدا یکی نیز وجود دارد،
514
00:23:49,850 –> 00:23:52,760
اما اکنون دیگر
515
00:23:52,760 –> 00:23:56,690
پیامهایمان را درست دریافت نمیکنیم.
516
00:23:56,690 –> 00:23:58,309
چمدان حاضر
517
00:23:58,309 –> 00:24:00,590
هر دو و نیم ثانیه از بین میرود، اما
518
00:24:00,590 –> 00:24:03,670
ما هنوز در کار صفر معطل نشدهایم، در اینجا
519
00:24:03,670 –> 00:24:07,520
چه اتفاقی میافتد، در نهایت
520
00:24:07,520 –> 00:24:09,440
بعد از یک عدد اول بسیار بزرگ یکی میگیریم
521
00:24:09,440 –> 00:24:12,140
، زیرا تعیین
522
00:24:12,140 –> 00:24:14,120
اعداد بزرگ زمان میبرد. برای
523
00:24:14,120 –> 00:24:17,090
مدت طولانی و حتی با وجود اینکه تابع جستجوی ما
524
00:24:17,090 –> 00:24:20,000
همزمان
525
00:24:20,000 –> 00:24:22,150
تابع تست غیرعادی است، به درستی مسدود نمیشود،
526
00:24:22,150 –> 00:24:25,370
بنابراین
527
00:24:25,370 –> 00:24:27,080
ما در برنامهنویسی همزمان برای
528
00:24:27,080 –> 00:24:29,960
فراخوانی یک تابع مسدودکننده، مرتکب گناه بزرگی شدهایم. ght
529
00:24:29,960 –> 00:24:32,210
و کل سیستم باید منتظر بماند تا
530
00:24:32,210 –> 00:24:37,670
تکمیل شود، بنابراین ما باید همگامسازی چاپ
531
00:24:37,670 –> 00:24:39,740
منطبقها غیرمسدود باشد، اما
532
00:24:39,740 –> 00:24:41,870
بلوکهای اصلی در اعداد بزرگ
533
00:24:41,870 –> 00:24:47,330
کل سیستم را متوقف میکنند، بنابراین ما باید آن را برطرف کنیم، بنابراین به
534
00:24:47,330 –> 00:24:48,470
تازگی یک قانون را کشف کردهایم.
535
00:24:48,470 –> 00:24:49,910
یعنی هر چیزی را که به صورت
536
00:24:49,910 –> 00:24:53,059
گذرا از یک روال KO فرا میخوانید
537
00:24:53,059 –> 00:24:57,110
باید غیرمسدود باشد، همه چیز خوب است، زیرا اگر
538
00:24:57,110 –> 00:24:58,850
هر چیزی را مسدود کننده در کل
539
00:24:58,850 –> 00:25:00,679
پشته تماس صدا کنید، کل سیستم را آویزان خواهید کرد،
540
00:25:00,679 –> 00:25:03,110
بنابراین روالهای KO
541
00:25:03,110 –> 00:25:05,809
برای تماس مسری
542
00:25:05,809 –> 00:25:09,520
هستند. در مورد نگاه کردن به سمت راست،
543
00:25:11,460 –> 00:25:14,160
خوب است، بنابراین بیایید تابع is prime خود را اصلاح کنیم،
544
00:25:14,160 –> 00:25:16,230
بنابراین در اینجا اصلی است Prime در
545
00:25:16,230 –> 00:25:18,780
سمت چپ و با فراخوانی آن یک bool true یا false برمی گرداند،
546
00:25:18,780 –> 00:25:20,070
547
00:25:20,070 –> 00:25:22,830
زیرا async اول است که دقیقاً
548
00:25:22,830 –> 00:25:24,570
یکسان است، با این تفاوت که اکنون ما یک بازده در
549
00:25:24,570 –> 00:25:27,090
این داریم. حلقه سمت راست را بزنید و البته فراخوانی آن
550
00:25:27,090 –> 00:25:28,770
یک شی مولد را برمی گرداند، بنابراین
551
00:25:28,770 –> 00:25:30,420
باید آن را با next تکرار کنیم و
552
00:25:30,420 –> 00:25:34,950
با زمانبندی ما کار خواهد کرد، همچنین باید
553
00:25:34,950 –> 00:25:37,950
هر سایت تماسی را که در حالت اول است تعمیر کنیم
554
00:25:37,950 –> 00:25:41,540
زیرا فراخوانی آن یک generat برمی گرداند. یا
555
00:25:41,540 –> 00:25:45,450
فقط نمی توانیم آن را صدا کنیم، باید
556
00:25:45,450 –> 00:25:49,260
آن را تکرار کنیم و روشی که ما ژنراتورهای تودرتو از ژنراتورها را صدا می زنیم
557
00:25:49,260 –> 00:25:51,300
، با
558
00:25:51,300 –> 00:25:54,720
بازدهی است که اگر حافظه من به درستی از آن استفاده کند
559
00:25:54,720 –> 00:26:00,840
، پایتون 3 است، فقط حالا
560
00:26:00,840 –> 00:26:02,400
اگر این کار را در پایتون 2 انجام دادید، باید
561
00:26:02,400 –> 00:26:04,890
یک عدد بنویسید. برای تکرار آن چیز، حلقه for صریح را در اینجا
562
00:26:04,890 –> 00:26:07,020
بیان کنید، بنابراین، از
563
00:26:07,020 –> 00:26:12,320
قرار دادن حلقه for اضافی در اینجا جلوگیری می کنیم،
564
00:26:12,320 –> 00:26:16,110
بنابراین اکنون ما از بازدهی استفاده می
565
00:26:16,110 –> 00:26:17,910
کنیم، زیرا از بازده هایی استفاده می کنیم که در نهایت از آنها
566
00:26:17,910 –> 00:26:20,730
وارد شده است، در این مورد به یک گزاره همگام می روند.
567
00:26:20,730 –> 00:26:23,730
is async اولین است زیرا
568
00:26:23,730 –> 00:26:25,680
ما این فرم بازده را داریم و این بازده در اینجا
569
00:26:25,680 –> 00:26:31,220
ما دیگر به این بازده اینجا نیازی نداریم بنابراین
570
00:26:31,220 –> 00:26:34,140
این اصطلاحی است که من بازده کیسه را اختراع کرده ام
571
00:26:34,140 –> 00:26:37,350
درست است در این مورد تا
572
00:26:37,350 –> 00:26:41,580
زمانی که به دیگری تسلیم می شوید به آن نیاز ندارید.
573
00:26:41,580 –> 00:26:44,160
روال مشترکی که شما به آن محول میکنید خوب است
574
00:26:44,160 –> 00:26:45,960
تا بتوانیم از شر بازده خرسی خلاص شویم. من
575
00:26:45,960 –> 00:26:47,910
در عرض یک دقیقه به این اصطلاح بازده خرسی برمیگردم،
576
00:26:47,910 –> 00:26:50,700
این قانون دوم است که این قانون این است
577
00:26:50,700 –> 00:26:53,520
که هر چیزی که به طور گذراً
578
00:26:53,520 –> 00:26:55,470
روتین Co شما را فراخوانی میکند باید ژنراتور را تکرار کند.
579
00:26:55,470 –> 00:26:57,690
بنابراین نه تنها روال های مشترک ما
580
00:26:57,690 –> 00:27:00,240
شرکت می کنند ntagious two core برگها
581
00:27:00,240 –> 00:27:02,940
مسری هستند که با دیگران تماس بگیرند و
582
00:27:02,940 –> 00:27:04,440
البته لازم نیست خیلی سخت به این موضوع فکر کنید
583
00:27:04,440 –> 00:27:06,900
تا متوجه شوید که خیلی زود
584
00:27:06,900 –> 00:27:09,150
کل برنامه شما باید ناهمزمان شود
585
00:27:09,150 –> 00:27:12,210
به جز عملکرد اصلی که
586
00:27:12,210 –> 00:27:15,120
منطقاً جایی است که در نهایت بله یا
587
00:27:15,120 –> 00:27:17,100
حداقل ناهمزمان نیست حداقل
588
00:27:17,100 –> 00:27:20,370
حق غیر مسدود کردن،
589
00:27:20,370 –> 00:27:23,679
بنابراین بسیار سخت است که یک
590
00:27:23,679 –> 00:27:25,630
سیستم موجود را که به این سبک نوشته نشده است انتخاب کنید
591
00:27:25,630 –> 00:27:28,960
و آن را به یک سیستم نوشته شده
592
00:27:28,960 –> 00:27:30,850
به این سبک تبدیل
593
00:27:30,850 –> 00:27:33,340
کنید.
594
00:27:33,340 –> 00:27:34,659
به دلیل خاصیت ویروسی واگیردار برنامهنویسی ناهمزمان، به سختی
595
00:27:34,659 –> 00:27:36,220
میتوانیم راه شما را از
596
00:27:36,220 –> 00:27:38,500
هر چیزی که به این شکل کار میکند جدا کنیم،
597
00:27:38,500 –> 00:27:41,169
598
00:27:41,169 –> 00:27:50,679
بنابراین
599
00:27:50,679 –> 00:27:52,450
در اینجا مورد دیگری است که این
600
00:27:52,450 –> 00:27:55,360
چیز مسری ظاهر میشود، بنابراین ما
601
00:27:55,360 –> 00:27:58,240
اینجا پیام تکراری ناهمگام داشتیم. که
602
00:27:58,240 –> 00:27:59,860
اساساً یک پیام چاپ می کند و سپس
603
00:27:59,860 –> 00:28:03,309
نحوه خوابیدن این چیز در اینجا خواب به
604
00:28:03,309 –> 00:28:05,950
طور موثر درست است، بنابراین بیایید یک refactoring خوب انجام دهیم
605
00:28:05,950 –> 00:28:09,220
و یک تابع خواب غیر همگام
606
00:28:09,220 –> 00:28:11,260
یا سابق استخراج کنیم. tract generator
607
00:28:11,260 –> 00:28:14,919
refactoring بنابراین در اینجا ما
608
00:28:14,919 –> 00:28:18,279
تمام کدها را استخراج کرده ایم به جز چاپ در حالت
609
00:28:18,279 –> 00:28:21,039
خواب غیر همگام که در اینجا وجود دارد، اکنون
610
00:28:21,039 –> 00:28:24,309
بازدهی خالی دارد و ما می توانیم از حالت
611
00:28:24,309 –> 00:28:26,889
async sleep در اینجا نتیجه بگیریم، بنابراین این فقط یک
612
00:28:26,889 –> 00:28:29,169
تابع استخراج ساده یا
613
00:28:29,169 –> 00:28:31,090
بازسازی روش استخراج است که با ژنراتورها انجام می شود.
614
00:28:31,090 –> 00:28:34,059
بسیار خوب، بنابراین به جای تماس، ما
615
00:28:34,059 –> 00:28:37,409
باید از فرم بازدهی
616
00:28:39,480 –> 00:28:41,279
استفاده کنیم،
617
00:28:41,279 –> 00:28:48,519
دنبال کردن خوب است، بنابراین این چیز خواب
618
00:28:48,519 –> 00:28:51,340
مهم است، بنابراین خواب ناهمگام
619
00:28:51,340 –> 00:28:53,620
همیشه حداقل یک بار نتیجه
620
00:28:53,620 –> 00:28:55,090
می دهد، زیرا این یکی از دستورالعمل هایی است که من به شما ارائه کردم،
621
00:28:55,090 –> 00:28:57,429
ما وارد اینجا می شویم و شما همیشه
622
00:28:57,429 –> 00:29:01,029
حداقل یک بار به آن بازده برسید، یک sing sleep
623
00:29:01,029 –> 00:29:07,110
صفر دقیقاً یک بار درست می دهد، که این
624
00:29:07,110 –> 00:29:11,930
یک ویژگی مفید است،
625
00:29:11,930 –> 00:29:15,170
بنابراین، به این دلیل، هر
626
00:29:15,170 –> 00:29:17,000
رخداد بازدهی خالی در هر جای دیگری از
627
00:29:17,000 –> 00:29:18,890
سیستم ما می تواند جایگزین شود،
628
00:29:18,890 –> 00:29:22,220
ما از خواب غیرهمگام صفر بازدهی را دریافت کرده ایم.
629
00:29:22,220 –> 00:29:24,560
این بدان معناست که تنها محصول بدون نیاز ما
630
00:29:24,560 –> 00:29:27,410
در کل سیستم میتواند در داخل
631
00:29:27,410 –> 00:29:33,170
عملکرد خواب به خوبی زندگی کند،
632
00:29:33,170 –> 00:29: