در این مطلب، ویدئو پردازش موازی پایتون با چند پردازش (ناهمزمان) با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:19:03
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,620 –> 00:00:03,060
سلام دوستان به یکی دیگر
2
00:00:03,060 –> 00:00:05,850
از آموزش های یوتیوب روز پایتون خوش آمدید من می خواهم
3
00:00:05,850 –> 00:00:08,179
روی برنامه نویسی موازی با پایتون به
4
00:00:08,179 –> 00:00:10,590
ویژه
5
00:00:10,590 –> 00:00:13,349
برنامه نویسی موازی ناهمزمان تمرکز کنم، این مهارتی است
6
00:00:13,349 –> 00:00:15,780
که واقعاً سرعت
7
00:00:15,780 –> 00:00:17,760
بسیاری از اسکریپت ها و برنامه های پایتون
8
00:00:17,760 –> 00:00:19,740
شما را بهبود می بخشد. برای استفاده از
9
00:00:19,740 –> 00:00:22,289
ماژول پردازش چندگانه،
10
00:00:22,289 –> 00:00:24,029
در اینجا شروع میکنیم و با مثال یاد میگیریم،
11
00:00:24,029 –> 00:00:28,410
بنابراین ابتدا یک PyCharm را باز
12
00:00:28,410 –> 00:00:30,859
کردهام، یک پروژه جدید در اینجا ایجاد شده است که
13
00:00:30,859 –> 00:00:35,280
YT چند پردازشی برای یوتیوب دارد و پس
14
00:00:35,280 –> 00:00:36,329
بیایید ادامه دهیم و ما فقط ابتدا یک اسکریپت جدید ایجاد کنید،
15
00:00:36,329 –> 00:00:37,079
16
00:00:37,079 –> 00:00:39,090
من فقط روی
17
00:00:39,090 –> 00:00:43,890
فایل پایتون جدید کلیک راست می کنم و
18
00:00:43,890 –> 00:00:47,250
این را همگام سازی می نامم زیرا
19
00:00:47,250 –> 00:00:49,410
پردازش ناهمزمان انجام می دهم و
20
00:00:49,410 –> 00:00:51,030
در مورد تفاوت های بین آنها صحبت خواهیم کرد.
21
00:00:51,030 –> 00:00:52,920
پردازش همزمان و ناهمزمان
22
00:00:52,920 –> 00:00:55,860
در اینجا همانطور که مثال را مرور می کنیم، بنابراین
23
00:00:55,860 –> 00:00:57,660
بیایید آن اسکریپت را ایجاد کنیم و در
24
00:00:57,660 –> 00:00:59,760
اینجا باز می شود و اولین کاری که
25
00:00:59,760 –> 00:01:01,230
می خواهم انجام دهم این است که
26
00:01:01,230 –> 00:01:04,049
امروز از ماژول پردازش چندگانه استفاده می کنم که می خواهم
27
00:01:04,049 –> 00:01:10,860
m را وارد کنم. پردازش ulti به عنوان MP و multi
28
00:01:10,860 –> 00:01:13,200
processing باید به عنوان یک
29
00:01:13,200 –> 00:01:15,780
ماژول استاندارد در نصب پایتون شما گنجانده شود،
30
00:01:15,780 –> 00:01:18,000
بنابراین شما مجبور نیستید
31
00:01:18,000 –> 00:01:20,850
کاری بیشتر از وارد کردن چند پردازش انجام دهید
32
00:01:20,850 –> 00:01:24,479
و حالا من میخواهم
33
00:01:24,479 –> 00:01:27,330
numpy را وارد کنم یا numpy را هر طور که میخواهید
34
00:01:27,330 –> 00:01:30,990
بگویید. آن را به عنوان NP و من می خواهم
35
00:01:30,990 –> 00:01:35,460
زمان را وارد کنم تا بتوانم زمان کنم که چقدر طول
36
00:01:35,460 –> 00:01:35,880
می کشد
37
00:01:35,880 –> 00:01:38,640
اکنون چیزی که می خواهم تابعی
38
00:01:38,640 –> 00:01:42,360
است که فلج می شود و
39
00:01:42,360 –> 00:01:46,579
من فقط یک عملکرد بسیار اساسی
40
00:01:46,579 –> 00:01:50,070
دارم که می خواهم من یک فراخوانی در حالت Sleep قرار می دهم به طوری
41
00:01:50,070 –> 00:01:51,270
که به نظر می رسد زمان زیادی طول می کشد
42
00:01:51,270 –> 00:01:52,710
تا اجرا شود، اما در واقع این یک تابع ساده است
43
00:01:52,710 –> 00:01:57,649
، این مرگ را تابع من می نامم
44
00:01:57,649 –> 00:02:01,110
و من یک عدد صحیح را ارسال می کنم
45
00:02:01,110 –> 00:02:03,930
که می تواند چیزها را به هم مرتبط کند. به
46
00:02:03,930 –> 00:02:05,670
لیست اصلی خود برمی گردم، من آن را پاس می کنم و می
47
00:02:05,670 –> 00:02:07,380
خواهم سه پارامتر لامبدا
48
00:02:07,380 –> 00:02:12,819
1 پارامتر 2 و پارامتر 3 را پاس
49
00:02:12,819 –> 00:02:16,810
کنم و سپس عملکرد من نتیجه به
50
00:02:16,810 –> 00:02:20,999
سادگی خواهد شد پارامتر 1
51
00:02:20,999 –> 00:02:28,930
مربع ضربدر پارامتر 2 به علاوه پارامتر
52
00:02:28,930 –> 00:02:34,359
3 و دلیل قانون من اینطوری انجامش
53
00:02:34,359 –> 00:02:35,650
میدم اگر ما یک
54
00:02:35,650 –> 00:02:38,230
تحلیل حساسیت انجام دهیم که ارزیابی کنیم کدام
55
00:02:38,230 –> 00:02:40,750
پارامترها یا متغیرها بیشتر بر یک
56
00:02:40,750 –> 00:02:43,629
تابع یا یک مدل تأثیر میگذارند، این
57
00:02:43,629 –> 00:02:46,180
نتیجه را نشان میدهد که پارامتر 1
58
00:02:46,180 –> 00:02:48,219
تأثیرگذارترین است، میتوانیم ببینیم که به
59
00:02:48,219 –> 00:02:51,129
دلیل مجذور بودن پارامتر 2 دومین تأثیرگذارترین پارامتر است.
60
00:02:51,129 –> 00:02:52,810
زیرا ضرب شده است
61
00:02:52,810 –> 00:02:55,359
و پارامتر 3 کمترین تأثیر را دارد
62
00:02:55,359 –> 00:02:59,199
زیرا به سادگی اضافه می شود و
63
00:02:59,199 –> 00:03:01,060
تجزیه و تحلیل حساسیت چیزی است که
64
00:03:01,060 –> 00:03:02,980
احتمالاً می خواهید از
65
00:03:02,980 –> 00:03:04,359
برنامه نویسی موازی استفاده کنید زیرا می
66
00:03:04,359 –> 00:03:06,400
توانید همان تابعی را که می دانید
67
00:03:06,400 –> 00:03:09,340
هزاران یا حتی میلیون ها بار
68
00:03:09,340 –> 00:03:12,129
بسته به آن اجرا کنید. تجزیه و تحلیل شما خوب است و بنابراین
69
00:03:12,129 –> 00:03:14,799
اکنون من آن را به مدت دو ثانیه در حالت خواب زمانی
70
00:03:14,799 –> 00:03:17,319
قرار می دهم و
71
00:03:17,319 –> 00:03:19,150
این به عنوان یک تابع یا یک مدل شبیه سازی
72
00:03:19,150 –> 00:03:22,419
می شود که زمان زیادی طول می کشد و سپس ما
73
00:03:22,419 –> 00:03:27,340
یک تاپل برمی گردیم I و
74
00:03:27,340 –> 00:03:31,509
نتیجه تابع ما است، بنابراین این
75
00:03:31,509 –> 00:03:34,569
تابعی است که میخواهیم اجرا کنیم،
76
00:03:34,569 –> 00:03:37,120
بیایید این را با numpy تنظیم کنیم،
77
00:03:37,120 –> 00:03:38,769
ابتدا این را به صورت سریال یا بدون
78
00:03:38,769 –> 00:03:41,109
موازیسازی بخوانیم تا ببینیم چگونه l
79
00:03:41,109 –> 00:03:48,280
قبل از انجام این کار لازم است
80
00:03:48,280 –> 00:03:52,299
که پارامترهای خود را برای قرار دادن آن تنظیم کنیم و بنابراین کاری
81
00:03:52,299 –> 00:03:56,250
که میخواهم انجام دهم این است که اگر نام
82
00:03:56,250 –> 00:04:02,500
برابر است به دو خط زیر خط اصلی نیاز دارد و
83
00:04:02,500 –> 00:04:04,709
سپس
84
00:04:06,870 –> 00:04:10,470
و اجازه دهید برخی از پارامترها را ایجاد کنیم.
85
00:04:10,470 –> 00:04:16,560
پارامترها برابر است با NP تصادفی تصادفی
86
00:04:16,560 –> 00:04:24,960
و ما با ده ردیف و سه
87
00:04:24,960 –> 00:04:26,280
ستون شروع می کنیم و متأسفیم که باید چند ستونی باشد
88
00:04:26,280 –> 00:04:28,139
زیرا یک شکل برای آرایه ای است
89
00:04:28,139 –> 00:04:32,340
که C را در آنجا اجاره می کنید و سپس آن را در
90
00:04:32,340 –> 00:04:34,440
صد ضرب می کنیم.
91
00:04:34,440 –> 00:04:36,330
که مقادیر ما از صفر تا
92
00:04:36,330 –> 00:04:37,669
100
93
00:04:37,669 –> 00:04:40,710
متغیر خواهد بود، یک عدد تصادفی بین
94
00:04:40,710 –> 00:04:46,130
صفر و یک برمی گرداند، خوب بیایید یک
95
00:04:46,130 –> 00:04:50,160
لیست نتایج خالی ایجاد کنیم، بیایید یک متغیر شروع زمان
96
00:04:50,160 –> 00:04:53,340
بسازیم تا زمان فعلی
97
00:04:53,340 –> 00:04:57,750
زمان فعلی باشد و حالا بیایید
98
00:04:57,750 –> 00:05:01,500
پارامترهای خود را حلقه بزنیم و ببینیم چگونه مدت زیادی
99
00:05:01,500 –> 00:05:04,830
طول می کشد تا این حالت خوب اجرا شود، بنابراین برای I در
100
00:05:04,830 –> 00:05:11,849
شکل پارامترهای محدوده 0 و ما فقط می
101
00:05:11,849 –> 00:05:15,479
خواهیم تعداد سطرها که 0 باشد و سپس
102
00:05:15,479 –> 00:05:23,849
می خواهیم نتیجه را بگیریم اوه و من
103
00:05:23,849 –> 00:05:25,020
فراموش کردم یک کاری که باید در اینجا
104
00:05:25,020 –> 00:05:27,120
انجام دهیم اضافه کنیم. تابع دیگری برای گرفتن
105
00:05:27,120 –> 00:05:29,669
نتیجه از این و اضافه کردن آن را به یک
106
00:05:29,669 –> 00:05:31,889
ضایعات جدید خوب است، پس بیایید این کار را انجام دهیم،
107
00:05:31,889 –> 00:05:33,090
بنابراین بیایید اینجا یک
108
00:05:33,090 –> 00:05:37,050
تابع جدید بسازیم تا مرگ را انجام دهیم نتیجه
109
00:05:37,050 –> 00:05:44,460
می گیریم و این نتیجه را از
110
00:05:44,460 –> 00:05:48,949
عملکرد ما می گیرد، بنابراین ما اساساً این
111
00:05:48,949 –> 00:05:52,530
تاپل را با I منتقل می کنیم و نتیجه را دریافت می کنیم نتیجه
112
00:05:52,530 –> 00:05:57,860
و سپس ما نتایج را انجام خواهیم داد dot append
113
00:05:57,860 –> 00:06:01,880
نتیجه درست مثل اینکه من
114
00:06:01,880 –> 00:06:06,349
به یک دونقطه در اینجا باز نیاز دارم.
115
00:06:06,349 –> 00:06:09,300
116
00:06:09,300 –> 00:06:14,460
117
00:06:14,460 –> 00:06:16,890
این نتیجه میشود،
118
00:06:16,890 –> 00:06:18,210
حتی اگر ما در حال تعریف نتایج
119
00:06:18,210 –> 00:06:19,680
در داخل یک تابع
120
00:06:19,680 –> 00:06:21,450
هستیم، میخواهیم به آن
121
00:06:21,450 –> 00:06:23,610
در اینجا در اسکریپت اصلی خود دسترسی داشته باشیم، بنابراین میتوانیم
122
00:06:23,610 –> 00:06:25,290
آن را چاپ کنیم، بنابراین من آن را به عنوان یک جهانی تعریف میکنم،
123
00:06:25,290 –> 00:06:29,300
خوب است، بنابراین اکنون میتوانیم بیایم. در اینجا
124
00:06:29,300 –> 00:06:33,660
اجازه دهید من بخواهم نتیجه بگیرم این
125
00:06:33,660 –> 00:06:41,640
همه نتایج ما را اضافه می کند تابع من
126
00:06:41,640 –> 00:06:57,540
پارامترهای ما را 0 پارامتر I 1 و پارامترهای
127
00:06:57,540 –> 00:07:04,380
I 2 می دهم تا در شماره ردیف
128
00:07:04,380 –> 00:07:07,320
و سپس هر پارامتر برای آن شماره ردیف ارسال کنم.
129
00:07:07,320 –> 00:07:11,100
ما خوب هستیم که به آنجا برویم
130
00:07:11,100 –> 00:07:13,980
و اکنون کاری که انجام خواهیم داد
131
00:07:13,980 –> 00:07:16,470
این است که زمان لازم برای آن t را چاپ خواهیم کرد o اجرا کنید،
132
00:07:16,470 –> 00:07:21,510
اجازه دهید زمان را به صورت سریال انجام دهیم و این
133
00:07:21,510 –> 00:07:24,890
زمان فعلی خواهد بود که زمان آن زمان است
134
00:07:24,890 –> 00:07:29,850
– زمانهایی که شروع میشوند و سپس
135
00:07:29,850 –> 00:07:32,850
نتایج را چاپ میکنیم تا بتوانید ببینید چه
136
00:07:32,850 –> 00:07:35,880
شکلی هستند، خوب است، بنابراین ما برویم
137
00:07:35,880 –> 00:07:38,220
، این را داریم اکنون آماده اجرا هستند و آنها
138
00:07:38,220 –> 00:07:41,970
این اخطارها را دارند که
139
00:07:41,970 –> 00:07:44,970
بین هر کدام دو فاصله می خواهد و در صورتی
140
00:07:44,970 –> 00:07:47,660
که تابع خود را داریم که در حال محاسبه
141
00:07:47,660 –> 00:07:53,220
آن هستیم، نتیجه دریافتی خود را داریم که
142
00:07:53,220 –> 00:07:55,140
نتیجه تابع را می گیرد و به جهانی خود اضافه می کند.
143
00:07:55,140 –> 00:07:59,190
نتایج و سپس ما
144
00:07:59,190 –> 00:08:01,610
اسکریپت خود را در اینجا داریم که قرار است اجرا شود،
145
00:08:01,610 –> 00:08:04,680
بنابراین بیایید ادامه دهیم و اجرا
146
00:08:04,680 –> 00:08:07,710
کنیم تا اجرا کنیم و روی run کلیک کنیم و
147
00:08:07,710 –> 00:08:10,980
برای اسکریپت اسکریپت async را انتخاب کنیم و من روی run okay کلیک میکنم،
148
00:08:10,980 –> 00:08:13,530
بنابراین این کار انجام میشود حدود
149
00:08:13,530 –> 00:08:15,960
20 ثانیه برای اجرا به دلیل اینکه این تابع
150
00:08:15,960 –> 00:08:19,980
برای دو ثانیه در این بین
151
00:08:19,980 –> 00:08:21,870
مکث می کند خوب هر
152
00:08:21,870 –> 00:08:24,210
بار که این تابع را اجرا می کند به مدت دو ثانیه مکث می کند بنابراین دقیقاً در اینجا
153
00:08:24,210 –> 00:08:27,210
دو ثانیه مکث می کنیم
154
00:08:27,210 –> 00:08:28,980
تا در حدود 20 ثانیه تمام شود ما
155
00:08:28,980 –> 00:08:32,809
باید یک زمان در سریال دریافت کنیم.
156
00:08:32,809 –> 00:08:35,299
و این باید حدود 20 وات باشد پس از اتمام،
157
00:08:35,299 –> 00:08:38,419
من فقط می خواهم این را مکث کنم تا زمانی که
158
00:08:38,419 –> 00:08:41,990
این کار خوب تمام شود، شما بروید، بنابراین می
159
00:08:41,990 –> 00:08:45,290
توانید ببینید که ما در سریال
160
00:08:45,290 –> 00:08:47,389
زمان کمی بیش از 20 ثانیه
161
00:08:47,389 –> 00:08:49,910
داشتیم و این نتایج ما است، بنابراین ما ردیف
162
00:08:49,910 –> 00:08:52,100
و مقداری را داریم که آمده است. خارج از
163
00:08:52,100 –> 00:08:54,050
تابع برای آن سطر، اکنون توجه کنید که چگونه
164
00:08:54,050 –> 00:08:56,059
اینها همه به ترتیب هستند، بنابراین ما
165
00:08:56,059 –> 00:09:03,379
0 1 2 3 4 5 6 7 8 9 داریم، بنابراین آن ها را به ترتیب اجرا کرد
166
00:09:03,379 –> 00:09:05,360
و بنابراین وقتی این را با موازی سازی ناهمزمان اجرا می کنیم، این
167
00:09:05,360 –> 00:09:08,420
168
00:09:08,420 –> 00:09:11,120
اعداد جاده ها نخواهند بود. به ترتیب برگردانده شده است بنابراین
169
00:09:11,120 –> 00:09:12,199
نمی توانید از موازی سازی ناهمزمان استفاده کنید
170
00:09:12,199 –> 00:09:15,079
اگر ظاهر من می گوید به
171
00:09:15,079 –> 00:09:17,720
عنوان مثال نتیجه ردیف 1 بسته
172
00:09:17,720 –> 00:09:20,389
به نتیجه ردیف 0 ما نمی توانیم این کار را انجام
173
00:09:20,389 –> 00:09:21,470
174
00:09:21,470 –> 00:09:22,939
دهیم زیرا نمی دانیم کدام ردیف قرار است
175
00:09:22,939 –> 00:09:25,550
اول برگردانده شود. خوب پس ما آن را داریم،
176
00:09:25,550 –> 00:09:28,910
پس حالا بیایید این کار را انجام دهیم
177
00:09:28,910 –> 00:09:31,430
و این کار را با موازی سازی اجرا
178
00:09:31,430 –> 00:09:35,240
کنیم و در واقع انجام آن بسیار ساده است، بنابراین
179
00:09:35,240 –> 00:09:37,430
تنها کاری که باید در اینجا انجام دهیم این است که فقط
180
00:09:37,430 –> 00:09:39,290
باید برخی چیزها را در اینجا اصلاح کنیم، بنابراین
181
00:09:39,290 –> 00:09:42,110
می رویم برای حفظ
182
00:09:42,110 –> 00:09:45,559
نتایجمان یکسان، TS را یکسان نگه می داریم و
183
00:09:45,559 –> 00:09:48,079
ما دوباره پارامترها را یکسان نگه میدارم، من
184
00:09:48,079 –> 00:09:49,579
در پایان به
185
00:09:49,579 –> 00:09:51,620
اینجا میروم و یک بیانیه چاپ جدید اضافه
186
00:09:51,620 –> 00:09:59,059
میکنم، بنابراین زمان را به صورت موازی انجام میدهیم.
187
00:09:59,059 –> 00:10:02,899
188
00:10:02,899 –> 00:10:08,000
منهای TS من می خواهم
189
00:10:08,000 –> 00:10:12,529
این خط را اینجا نظر بدهم و اکنون در داخل
190
00:10:12,529 –> 00:10:14,269
حلقه ما و بالاتر، شما
191
00:10:14,269