در این مطلب، ویدئو محاسبات با کارایی بالا با پایتون: Numba Vectorize با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:10:03
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:03,700 –> 00:00:06,439
دیروز خیلی در مورد شما صحبت کردیم فاکس
2
00:00:06,439 –> 00:00:11,990
و سعی کردیم با استفاده از منابع مالی شما Num Pie را سریع بسازیم،
3
00:00:11,990 –> 00:00:15,019
بنابراین با استفاده از
4
00:00:15,019 –> 00:00:17,360
آن روال هایی که اساساً یک
5
00:00:17,360 –> 00:00:20,540
کد ماشینی را اجرا می کنند و قبلاً
6
00:00:20,540 –> 00:00:24,470
شما را با جزئیات نه بردار اعداد آشنا کردیم،
7
00:00:24,470 –> 00:00:27,980
بنابراین این نوت بوک وارد یک
8
00:00:27,980 –> 00:00:29,690
جزئیات کمی در مورد نحوه استفاده از بردار اعداد،
9
00:00:29,690 –> 00:00:32,140
10
00:00:36,500 –> 00:00:39,440
بنابراین چه اتفاقی میافتد وقتی یک
11
00:00:39,440 –> 00:00:44,320
تابع ساده um را از کتابخانه ریاضی
12
00:00:44,320 –> 00:00:51,590
میگیریم و شاید تابعی داریم
13
00:00:51,590 –> 00:00:53,360
که میخواهیم آن را اعمال کنیم که هنوز وجود
14
00:00:53,360 –> 00:00:58,970
ندارد، مانند سینوس کسینوس B نیز میتواند باشد.
15
00:00:58,970 –> 00:01:03,020
سینوس یک کسینوس a یا شاید سینوس مربع یک
16
00:01:03,020 –> 00:01:09,729
به علاوه کسینوس مربع a شما خوب هستید
17
00:01:09,729 –> 00:01:12,350
در واقع اکثر کامپایلرها هنوز آن را
18
00:01:12,350 –> 00:01:14,210
نمیفهمند منظورم این است که کامپایلرها بهینهسازیهای فوقالعادهای انجام میدهند
19
00:01:14,210 –> 00:01:18,830
و ما
20
00:01:18,830 –> 00:01:23,900
کل سریها را به عبارت بسته تقسیم میکنیم،
21
00:01:23,900 –> 00:01:25,759
اما آنها این کار را نمیکنند. مجذور سینوس به اضافه
22
00:01:25,759 –> 00:01:28,850
کسینوس مجذور اما به هر حال um بنابراین ما
23
00:01:28,850 –> 00:01:31,310
این تابع را در اینجا داریم و دو
24
00:01:31,310 –> 00:01:34,009
متغیر a و P را می گیرد و
25
00:01:34,009 –> 00:01:37,910
سینوس
26
00:01:37,910 –> 00:01:41,000
27
00:01:41,000 –> 00:01:45,110
ضربدر کسینوس را محاسبه می کند. y به 13 هر
28
00:01:45,110 –> 00:01:51,200
حدس می زنم چه اتفاقی می افتد، اما اوه
29
00:01:51,200 –> 00:01:54,010
درست کار نمی کند، بله دقیقاً
30
00:01:54,010 –> 00:01:59,030
بیایید آنجا را امتحان کنیم، ما فقط اندازه یک را
31
00:01:59,030 –> 00:02:01,430
افزایش می دهیم، بنابراین در واقع می توانید یک آرایه داور را
32
00:02:01,430 –> 00:02:04,880
تا زمانی که اندازه یک باشد
33
00:02:04,880 –> 00:02:09,190
، در اسکالرها تبدیل کنید، زیرا من به
34
00:02:09,190 –> 00:02:12,049
صراحت می گویم در واقع از علامت ریاضی
35
00:02:12,049 –> 00:02:16,220
در اینجا استفاده کنید و کسینوس ریاضی را نه نسخههای numpy
36
00:02:16,220 –> 00:02:18,200
اگر از نسخههای numpy استفاده میکردم
37
00:02:18,200 –> 00:02:19,489
،
38
00:02:19,489 –> 00:02:21,080
خستهکننده بود و چیزی
39
00:02:21,080 –> 00:02:28,640
برای نشان دادن نداشتم، اما با این کار خوب نیست،
40
00:02:28,640 –> 00:02:33,709
پس چه آیا میتوانیم انجام دهیم، میتوانیم استفاده کنیم، میتوانیم
41
00:02:33,709 –> 00:02:38,510
بله را کامپایل کنیم، بنابراین میتوانیم از چشمهای بردار بیحرکتی استفاده
42
00:02:38,510 –> 00:02:44,510
کنیم، همانطور که دیروز یاد گرفتیم و این کار را انجام میدهیم،
43
00:02:44,510 –> 00:02:46,750
44
00:02:47,180 –> 00:02:51,609
سلام،
45
00:02:51,609 –> 00:02:55,489
زمانبندی کمی طول کشید و این کار را انجام دادیم و
46
00:02:55,489 –> 00:02:58,790
میبینیم که برای آرایهای که من فقط 436 میلی ثانیه طول میکشد.
47
00:02:58,790 –> 00:03:00,799
راه اندازی در
48
00:03:00,799 –> 00:03:09,469
بخش قبل کار می کند، اگرچه من می توانم
49
00:03:09,469 –> 00:03:12,730
از بردار اعداد نیز استفاده
50
00:03:19,280 –> 00:03:21,710
کنم و در اینجا من اساساً از
51
00:03:21,710 –> 00:03:25,070
همان رابط کاربری نسخه numpy استفاده می کنم، بنابراین
52
00:03:25,070 –> 00:03:29,810
از آن به عنوان فراخوانی تابع استفاده می کنم و
53
00:03:29,810 –> 00:03:33,940
هفت نقطه صفر نه میلی ثانیه دریافت می کنم
54
00:03:33,940 –> 00:03:39,080
که سرعت آن حدوداً افزایش می یابد. شصت بود نه
55
00:03:39,080 –> 00:03:41,290
بابا
56
00:03:46,060 –> 00:03:50,700
حالا وقتی این کار را انجام میدهیم،
57
00:03:50,700 –> 00:03:57,209
هر زمان که آن را فراخوانی میکنم، در واقع آن را کامپایل میکند، بنابراین وقتی
58
00:03:57,420 –> 00:04:01,959
این تابع را ایجاد میکنم،
59
00:04:01,959 –> 00:04:06,930
در واقع فقط یک فراخوانی ایجاد میکند،
60
00:04:06,930 –> 00:04:10,450
در آن زمان کامپایل نمیکند، در
61
00:04:10,450 –> 00:04:12,310
واقع منتظر میماند تا
62
00:04:12,310 –> 00:04:15,910
تابع قبل از کامپایل شدن فراخوانی شود. سپس
63
00:04:15,910 –> 00:04:17,738
به آرگومانهایی که میفرستم نگاه میکند
64
00:04:17,738 –> 00:04:21,820
و کد ماشینی را برای آن
65
00:04:21,820 –> 00:04:24,430
تابع ایجاد میکند با آرگومانهایی که با آن فراخوانی شده
66
00:04:24,430 –> 00:04:28,419
است تا حدودی شبیه به C++ به عنوان
67
00:04:28,419 –> 00:04:33,280
مکانیزم الگو است، اما گاهی اوقات من
68
00:04:33,280 –> 00:04:35,290
نمیخواهم این اتفاق در همان زمان بیفتد.
69
00:04:35,290 –> 00:04:38,020
وقتی با آن تماس میگیرم،
70
00:04:38,020 –> 00:04:40,450
میخواهم وقتی این توابع را تعریف میکنم این اتفاق بیفتد و سپس
71
00:04:40,450 –> 00:04:42,300
میخواهم با آن کار تمام شود
72
00:04:42,300 –> 00:04:45,160
و اینجاست که کامپایل مشتاقانه وارد میشود و
73
00:04:45,160 –> 00:04:45,580
74
00:04:45,580 –> 00:04:49,979
میتوانم
75
00:04:49,979 –> 00:04:57,690
با ارسال لیستی از رشتههایی که ابتدا در آن قرار میدهم، بگویم کدام نسخه را میخواهم.
76
00:04:57,690 –> 00:05:02,020
آرگومان بازگشتی در این
77
00:05:02,020 –> 00:05:05,110
مورد یک عدد ممیز شناور با دقت دوگانه است
78
00:05:05,110 –> 00:05:07,720