در این مطلب، ویدئو نسخه ی نمایشی: عملیات ناهمزمان | پایتون بیشتر برای مبتدیان [19 از 20] با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:13:41
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,140 –> 00:00:02,820
>> بیایید نسخه ی نمایشی را شروع کنیم
2
00:00:02,820 –> 00:00:05,159
من ابتدا به نمونه ای از همگام سازی نگاه می کنم
3
00:00:05,159 –> 00:00:09,300
سپس به یک مثال ناهمزمان نگاه کنید
4
00:00:09,300 –> 00:00:12,240
هر دو نمونه هستند
5
00:00:12,240 –> 00:00:15,950
برای تماس با یک وب سرویس
6
00:00:15,950 –> 00:00:21,980
این وب سرویس فقط
7
00:00:21,980 –> 00:00:26,120
به سادگی چند ثانیه تأخیر کنید و مقدار را برگردانید
8
00:00:26,120 –> 00:00:31,620
این اساسا یک خواب() از
نسخه REST API
9
00:00:31,620 –> 00:00:34,250
من شخصاً آن را دوست ندارم
10
00:00:34,250 –> 00:00:37,775
برای دمو مستقیماً از sleep() استفاده کنید
11
00:00:37,775 –> 00:00:39,620
اگرچه ممکن است باشد
12
00:00:39,620 –> 00:00:41,510
نمونه های دیگر هنوز مفید هستند
13
00:00:41,510 –> 00:00:43,120
اما من معمولا سعی می کنم از این کار اجتناب کنم
14
00:00:43,120 –> 00:00:46,370
چون فکر نمی کنم به اندازه کافی واقعی باشد
15
00:00:46,370 –> 00:00:47,690
هر وقت به آن نگاه می کنم
16
00:00:47,690 –> 00:00:49,760
من می گفتم: “اوه، آیا می خواهید عملکرد را بهبود ببخشید؟
17
00:00:49,760 –> 00:00:52,545
Sleep() را حذف کنید و مشکل حل می شود.
18
00:00:52,545 –> 00:00:55,560
شاید فقط من اهمیت می دهم
19
00:00:55,560 –> 00:00:59,300
اما در عوض دوست دارم با سرویس دیگری تماس بگیرم
20
00:00:59,300 –> 00:01:02,375
مثلا الان این
21
00:01:02,375 –> 00:01:03,935
ساده ترین راه است
22
00:01:03,935 –> 00:01:07,415
نسخه پیشرفته خواب()
23
00:01:07,415 –> 00:01:10,985
ما به یک وب سرویس می گوییم
24
00:01:10,985 –> 00:01:14,505
متوجه خواهید شد
25
00:01:14,505 –> 00:01:18,660
کتابخانه timeit را وارد کردیم
26
00:01:18,660 –> 00:01:20,470
من از طرفداران پر و پا قرص کتابخانه timeit هستم
27
00:01:20,470 –> 00:01:22,760
زیرا سریع و آسان است
28
00:01:22,760 –> 00:01:25,070
بدانید که کار چقدر طول می کشد
29
00:01:25,070 –> 00:01:26,930
بنابراین ما default_timer را تنظیم می کنیم
30
00:01:26,930 –> 00:01:30,275
می تواند تفاوت زمانی را مانند کرونومتر محاسبه کند
31
00:01:30,275 –> 00:01:32,645
سپس آن را چاپ کنید
32
00:01:32,645 –> 00:01:34,775
سپس باید کتابخانه درخواست ها را وارد کنیم
33
00:01:34,775 –> 00:01:40,325
در ویدیوهای قبلی ما استفاده شده است
34
00:01:40,325 –> 00:01:41,825
این پایتون پر استفاده ترین است
35
00:01:41,825 –> 00:01:47,540
کتابخانه هایی برای برقراری تماس های HTTP/HTTPS
36
00:01:47,540 –> 00:01:49,910
در حالی که کتابخانه درخواست ها
37
00:01:49,910 –> 00:01:51,815
همزمان است
38
00:01:51,815 –> 00:01:54,995
این بدان معناست که یک کار را قبل از انجام کار بعدی انجام می دهد
39
00:01:54,995 –> 00:01:57,110
اگر بخواهیم کار را به صورت ناهمزمان اجرا کنیم
40
00:01:57,110 –> 00:02:00,380
ما باید کار متفاوتی انجام دهیم
41
00:02:00,380 –> 00:02:01,910
شاید از کتابخانه دیگری استفاده کنید
42
00:02:01,910 –> 00:02:04,040
در حقیقت
43
00:02:04,040 –> 00:02:07,310
نسخه ی نمایشی دیگر من
استفاده از کتابخانه دیگری است
44
00:02:07,310 –> 00:02:10,960
کتابخانه ای برای برنامه نویسی ناهمزمان
45
00:02:10,960 –> 00:02:12,770
هیچ جایی
46
00:02:12,770 –> 00:02:15,890
من آن جزئیات کوچک را نادیده خواهم گرفت
چیزی شبیه چاپ ()
47
00:02:15,890 –> 00:02:17,930
فقط همین است
48
00:02:17,930 –> 00:02:20,150
تا دمو زیبا به نظر برسد
49
00:02:20,150 –> 00:02:21,170
بنابراین ما فقط گفتیم: “هی،
50
00:02:21,170 –> 00:02:23,280
بیایید این را شروع کنیم، این را متوقف کنید
این را شروع کن، این را بس کن
51
00:02:23,280 –> 00:02:25,015
بنابراین من روی چاپ تمرکز نمی کنم ()
52
00:02:25,015 –> 00:02:28,590
اما برعکس
من می خواهم در اینجا روی 6 خط تمرکز کنم
53
00:02:28,590 –> 00:02:31,730
این get() است
54
00:02:31,730 –> 00:02:35,735
ما روش متن را دریافت می کنیم
55
00:02:35,735 –> 00:02:38,270
حالا داریم
56
00:02:38,270 –> 00:02:41,795
پارامتری به نام تاخیر
57
00:02:41,795 –> 00:02:45,730
تاخیر تعداد ثانیه هایی است که می خواهیم به تاخیر بیاندازیم
58
00:02:45,730 –> 00:02:49,264
وقتی این دمو را اجرا می کنیم
59
00:02:49,264 –> 00:02:50,870
در نسخه ی نمایشی ما
60
00:02:50,870 –> 00:02:54,815
ما یک تاخیر دو ثانیه ای انجام می دهیم
61
00:02:54,815 –> 00:02:56,945
به دنبال آن سه ثانیه تاخیر
62
00:02:56,945 –> 00:03:01,555
و در نهایت چاپ کنید که چقدر طول کشیده است
63
00:03:01,555 –> 00:03:05,760
و همه چیز در این نوشته شده است
در تابع run_demo()
64
00:03:05,760 –> 00:03:08,330
و دلیل فراخوانی آن از main()
65
00:03:08,330 –> 00:03:11,210
در بخش بعدی بحث خواهیم کرد
66
00:03:11,210 –> 00:03:13,765
اکنون ما به سادگی main() را فراخوانی می کنیم.
67
00:03:13,765 –> 00:03:17,210
خب حالا بیایید آن را اجرا کنیم و ببینیم
68
00:03:17,210 –> 00:03:22,100
python sync_demo.py
69
00:03:22,100 –> 00:03:24,410
خواهید دید
70
00:03:24,410 –> 00:03:26,525
در حال انجام یک عملیات همزمان است
71
00:03:26,525 –> 00:03:29,820
پس شروع شد،
دو ثانیه به تاخیر بیاندازید، سپس تمام کنید
72
00:03:29,820 –> 00:03:33,060
آن آغاز شده،
سه ثانیه به تاخیر بیاندازید، سپس تمام کنید
73
00:03:33,060 –> 00:03:37,265
متوجه خواهید شد که کل فرآیند 6.3 ثانیه طول کشید
74
00:03:37,265 –> 00:03:41,330
1.3 ثانیه اضافی به این دلیل است
75
00:03:41,330 –> 00:03:46,180
همچنین مدتی طول می کشد تا اتصال و قطع شود
76
00:03:46,180 –> 00:03:51,755
این لزوما بهترین راه نیست
77
00:03:51,755 –> 00:03:54,365
اگر فقط یک مصرف کننده در حال انجام کاری باشد
78
00:03:54,365 –> 00:03:58,165
شاید این برنامه ها اجرا شوند
در نوت بوک Jupyter
79
00:03:58,165 –> 00:04:00,560
راستی
ممکن است دوره دیگری داشته باشیم
80
00:04:00,560 –> 00:04:03,360
اختصاص داده شده به صحبت در مورد نوت بوک های Jupyter
می توانید نگاهی به آن دوره بیندازید
81
00:04:03,360 –> 00:04:05,750
اگر این برنامه ها را بگذارم
همه در نوت بوک Jupyter
82
00:04:05,750 –> 00:04:08,720
من نیازی به انجام کار دیگری ندارم
83
00:04:08,720 –> 00:04:13,265
من فقط می توانم در آنجا صبر کنم تا نتیجه اجرا برگردد
84
00:04:13,265 –> 00:04:15,170
سپس آن را انجام دهید
85
00:04:15,170 –> 00:04:18,320
اما اگر من در حال ساخت چیزی شبیه به
86
00:04:18,320 –> 00:04:21,529
استفاده همزمان توسط چندین کاربر
یا می خواهم سریعتر اجرا شود
87
00:04:21,529 –> 00:04:24,260
پس من به پاسخ بهتری نیاز دارم
88
00:04:24,260 –> 00:04:26,750
بنابراین این همان چیزی است که در ادامه خواهم گفت
89
00:04:26,750 –> 00:04:29,420
حالا بیایید ببینیم
90
00:04:29,420 –> 00:04:33,335
چگونه به صورت ناهمزمان بنویسیم
91
00:04:33,335 –> 00:04:36,605
من می خواهم روی بالا تأکید کنم
92
00:04:36,605 –> 00:04:39,140
ما دو کتابخانه وارد کردیم
93
00:04:39,140 –> 00:04:43,905
ما aiohttp را وارد می کنیم
94
00:04:43,905 –> 00:04:46,070
نکته این است
95
00:04:46,070 –> 00:04:48,620
این یک کتابخانه دیگر است
96
00:04:48,620 –> 00:04:50,435
بنابراین درخواست نیست
97
00:04:50,435 –> 00:04:53,569
این یک کتابخانه ساخته شده در پایتون نیست
98
00:04:53,569 –> 00:04:56,540
اما یک کتابخانه متفاوت
99
00:04:56,540 –> 00:05:03,540
aiohttp در مورد asyncio است
و برقراری تماس های HTTP
100
00:05:03,540 –> 00:05:06,230
مکان جادویی آن
101
00:05:06,230 –> 00:05:09,230
در شی جلسه
102
00:05:09,230 –> 00:05:11,390
معمولا شما ایجاد می کنید
103
00:05:11,390 –> 00:05:15,650
یک جلسه
و بارها و بارها به استفاده مجدد از آن ادامه دهید
104
00:05:15,650 –> 00:05:19,040
این در واقع کمی عملکرد اضافی را اضافه می کند
105
00:05:19,040 –> 00:05:21,170
زیرا می تواند
106
00:05:21,170 –> 00:05:24,170
استفاده مجدد از اتصالات موجود
107
00:05:24,170 –> 00:05:25,805
بنابراین، به طور خودکار انجام می دهد
108
00:05:25,805 –> 00:05:28,430
امکان اشتراک گذاری اتصالات
109
00:05:28,430 –> 00:05:31,700
ما می توانیم اینجا را ببینیم
110
00:05:31,700 –> 00:05:35,500
یک جلسه ایجاد کنید
111
00:05:35,500 –> 00:05:38,300
حالا متوجه خواهید شد
112
00:05:38,300 –> 00:05:41,075
اگر قرار بود از await استفاده کنیم
113
00:05:41,075 –> 00:05:44,165
ما باید ناهمگام را در اینجا علامت گذاری کنیم
114
00:05:44,165 –> 00:05:46,435
چرا همگام سازی در اینجا مهم است؟
115
00:05:46,435 –> 00:05:49,460
زیرا اساساً اینطور است
116
00:05:49,460 –> 00:05:52,340
به محیط اجرا بگویید
117
00:05:52,340 –> 00:05:56,090
“هی، در آن منتظر خواهد بود”
118
00:05:56,090 –> 00:05:59,900
کلید انتظار برای کار
119
00:05:59,900 –> 00:06:04,040
محیط اجرا است
120
00:06:04,040 –> 00:06:05,990
نیاز به دانستن
121
00:06:05,990 –> 00:06:08,255
“هی، ما باید اینجا مکث کنیم.
122
00:06:08,255 –> 00:06:10,674
به همین دلیل است که ما این همگام سازی را داریم
123
00:06:10,674 –> 00:06:15,440
ممکن است منطقی باشد که این برچسب روی یک متد باشد
چون بالاخره
124
00:06:15,440 –> 00:06:18,890
ما در این روش انتظار را فراخوانی می کنیم
125
00:06:18,890 –> 00:06:20,540
بنابراین شاید منطقی باشد که اینجا ظاهر شود
126
00:06:20,540 –> 00:06:21,860
سپس
127
00:06:21,860 –> 00:06:23,300
زمانی که روش به پایان می رسد
128
00:06:23,300 –> 00:06:25,770
به سادگی در آن نقطه به پایان می رسد
129
00:06:25,770 –> 00:06:27,830
بنابراین ما می خواهیم از محیط زمان اجرا مطمئن شویم
130
00:06:27,830 –> 00:06:29,960
جایی را بدانند
131
00:06:29,960 –> 00:06:32,600
ممکن است مکثی وجود داشته باشد
132
00:06:32,600 –> 00:06:34,210
یک انتظار وجود خواهد داشت
133
00:06:34,210 –> 00:06:36,450
دقیقاً به همین روش انجام دهید
134
00:06:36,450 –> 00:06:38,805
اگه از ویدیو قبلی یادتون باشه
135
00:06:38,805 –> 00:06:40,110
ما می بینیم با
136
00:06:40,110 –> 00:06:41,340
با انجام کارها
137
00:06:41,340 –> 00:06:44,145
به ما در پ