در این مطلب، ویدئو پایتون تک رشته ای نیست (و نحوه دور زدن GIL) با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:10:22
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,000 –> 00:00:01,159
بسیار خوب، پس این دو
2
00:00:01,159 –> 00:00:04,319
تصور غلط وجود دارد که من اغلب در
3
00:00:04,319 –> 00:00:05,520
رابطه با زبان برنامه نویسی پایتون
4
00:00:05,520 –> 00:00:07,589
با آنها روبرو می شوم، هم در
5
00:00:07,589 –> 00:00:09,389
تنظیمات حرفه ای و هم فقط در
6
00:00:09,389 –> 00:00:10,740
خواندن نظرات در اینترنت
7
00:00:10,740 –> 00:00:12,870
و مواردی از این قبیل، با آنها مواجه شده ام و علیرغم اینکه کاملاً اشتباه هستند، بسیار فراگیر به نظر می رسند.
8
00:00:12,870 –> 00:00:15,570
9
00:00:15,570 –> 00:00:17,970
خوب اکثراً کاملاً اشتباه است اولین
10
00:00:17,970 –> 00:00:19,770
مورد این است که پایتون یک زبان تک رشته ای
11
00:00:19,770 –> 00:00:22,170
است که این زبان کاملاً نادرست است
12
00:00:22,170 –> 00:00:24,090
و من می توانم نشان دهم که خیلی سریع در یک
13
00:00:24,090 –> 00:00:26,789
ثانیه در اینجا دومی این است که اگر می
14
00:00:26,789 –> 00:00:28,500
خواهید از چندین هسته رایانه خود
15
00:00:28,500 –> 00:00:31,050
در Python don استفاده کنید. از threading استفاده نکنید
16
00:00:31,050 –> 00:00:33,390
و در عوض از پردازش چندگانه استفاده کنید،
17
00:00:33,390 –> 00:00:35,309
این یکی کمی لایه لایه است، زیرا از نظر
18
00:00:35,309 –> 00:00:37,620
فنی درست است، بنابراین اگر فقط از
19
00:00:37,620 –> 00:00:40,050
پایتون خالص استفاده می کنید، قطعاً
20
00:00:40,050 –> 00:00:42,360
منطقی است و تنها زمینه ای
21
00:00:42,360 –> 00:00:44,309
که باید در آن از رشته ها استفاده کنید این است که
22
00:00:44,309 –> 00:00:46,950
کد شما در IO منتظر است. اگر
23
00:00:46,950 –> 00:00:48,500
می خواهید کاری را انجام دهید که از نظر
24
00:00:48,500 –> 00:00:51,239
محاسباتی سنگین است یا نیاز به
25
00:00:51,239 –> 00:00:52,770
استفاده از چندین هسته از رایانه شما
26
00:00:52,770 –> 00:00:54,420
با استفاده از threading دارد، انجام نمی شود. شما را به
27
00:00:54,420 –> 00:00:54,899
هر جایی میرسانم،
28
00:00:54,899 –> 00:00:57,390
اما آخرین باری که
29
00:00:57,390 –> 00:00:58,590
30
00:00:58,590 –> 00:01:00,809
با استفاده از پایتون کاری محاسباتی فشرده انجام میدادید کی بود و ما فقط از پایتون خالص استفاده میکردیم،
31
00:01:00,809 –> 00:01:03,000
شرط میبندم که
32
00:01:03,000 –> 00:01:04,979
پاسخ تقریباً هرگز نخواهد بود زیرا
33
00:01:04,979 –> 00:01:08,400
احتمالاً از numpy یا Sai PI یا numba یا numba استفاده میکردید.
34
00:01:08,400 –> 00:01:11,460
سیفون یا تماس با کتابخانه C یا
35
00:01:11,460 –> 00:01:13,890
استفاده از مشعل PI یا چیزهای بی شماری را می دانید
36
00:01:13,890 –> 00:01:16,290
و وقتی زمینه خود
37
00:01:16,290 –> 00:01:18,479
را به این ترتیب تغییر دادید، این جمله
38
00:01:18,479 –> 00:01:19,409
کاملاً صادق نیست
39
00:01:19,409 –> 00:01:20,820
و من نمونه هایی از آن را نیز نشان خواهم داد،
40
00:01:20,820 –> 00:01:23,100
بنابراین بیایید اولین مورد از این
41
00:01:23,100 –> 00:01:24,960
تصورات غلط را از بین ببریم. پایتون یک
42
00:01:24,960 –> 00:01:26,700
زبان تک رشته ای است و
43
00:01:26,700 –> 00:01:28,290
هر زمان که یک رشته در پایتون ایجاد می کنید،
44
00:01:28,290 –> 00:01:29,790
کاری که انجام می دهید ایجاد یک رشته سبز است
45
00:01:29,790 –> 00:01:32,250
و نه یک رشته سیستمی که
46
00:01:32,250 –> 00:01:34,020
این زبان را از بین می برد نسبتاً ساده است،
47
00:01:34,020 –> 00:01:36,750
من یک نمونه بالای H در سمت چپ باز است
48
00:01:36,750 –> 00:01:38,610
و من دارم آن را در نمای درختی قرار دهید و
49
00:01:38,610 –> 00:01:41,130
فرآیند پایتون را جستجو کنید، بنابراین در اینجا
50
00:01:41,130 –> 00:01:43,680
من یک جلسه ipython را در
51
00:01:43,680 –> 00:01:45,810
محیط مجازی خود RL باز کردهام و
52
00:01:45,810 –> 00:01:47,790
تا جایی که میتوانید به آن در ترمینال سمت راست میروم.
53
00:01:47,790 –> 00:01:49,950
ببینید فقط یک رشته
54
00:01:49,950 –> 00:01:52,740
تحت این نوع فرآیند اصلی وجود دارد که
55
00:01:52,740 –> 00:01:55,110
رشته اصلی است، بنابراین ما میخواهیم موضوع را
56
00:01:55,110 –> 00:01:58,560
وارد کنیم و سپس یک رشته جدید ایجاد کنیم
57
00:01:58,560 –> 00:02:02,219
و سپس من دوست
58
00:02:02,219 –> 00:02:03,810
دارم بیشتر رشتههای خود را بهعنوان رشتههای شبح نگه دارم، زیرا
59
00:02:03,810 –> 00:02:06,030
این اطمینان را ایجاد میکند که هر زمان
60
00:02:06,030 –> 00:02:08,429
که تاپیک اصلی خارج شد، آنها خارج میشوند و ما ادامه میدهیم
61
00:02:08,429 –> 00:02:10,720
و آن را شروع میکنیم،
62
00:02:10,720 –> 00:02:12,980
درست است که در واقع هیچ کاری انجام
63
00:02:12,980 –> 00:02:14,570
نداد، زیرا فراموش کردم به آن تاپیک
64
00:02:14,570 –> 00:02:19,400
کاری بدهم تا انجام دهم، بنابراین من به عنوان رد کردن
65
00:02:19,400 –> 00:02:22,280
مخالفت خودم، اکنون به
66
00:02:22,280 –> 00:02:23,990
تاپیک کاری دادهام که انجام دهد. بنابراین من
67
00:02:23,990 –> 00:02:25,670
فقط این تابع را در جایی ساختم که یک حلقه while وجود دارد
68
00:02:25,670 –> 00:02:28,700
و در حال انجام کاری است و حالا
69
00:02:28,700 –> 00:02:30,260
وقتی موضوع را ایجاد می کنم به آن
70
00:02:30,260 –> 00:02:31,910
هدف می دهم و سپس دیمون را برابر
71
00:02:31,910 –> 00:02:33,920
true قرار می دهم و شروع می کنم و اکنون می توانید در
72
00:02:33,920 –> 00:02:37,430
سمت چپ ببینید که ما یک دوم داریم
73
00:02:37,430 –> 00:02:40,220
رشته دوم تحت فرآیند اصلی ipython
74
00:02:40,220 –> 00:02:42,950
و ما میتوانیم این کار را دوباره انجام دهیم،
75
00:02:42,950 –> 00:02:49,970
میتوانیم هر بار که یک رشته جدید در پایتون شروع میکنیم یک t2 و bam بسازیم
76
00:02:49,970 –> 00:02:52,310
و در واقع
77
00:02:52,310 –> 00:02:55,220
کاری به آن بدهیم تا یک موضوع
78
00:02:55,220 –> 00:02:59,270
جدید در سطح سیستم در HTM نشان داده شود. این به عنوان
79
00:02:59,270 –> 00:03:01,190
تا جایی که من نگرانم، به طور قطع ثابت می کند
80
00:03:01,190 –> 00:03:03,350
که پایتون مطلقاً یک
81
00:03:03,350 –> 00:03:05,000
زبان رشته ای نیست و رشته های
82
00:03:05,000 –> 00:03:07,790
پایتون رشته های واقعی نقل قول بدون نقل قول
83
00:03:07,790 –> 00:03:09,680
هستند که توسط سیستم مدیریت می شوند و
84
00:03:09,680 –> 00:03:11,840
توسط یک حلقه رویداد داخلی مدیریت نمی شوند
85
00:03:11,840 –> 00:03:14,030
و رشته های سبز نیستند.
86
00:03:14,030 –> 00:03:16,550
اکنون هر زمان که صحبت از async به میان میآید،
87
00:03:16,550 –> 00:03:17,989
چیزی است که قطعاً باید از آن استفاده کنید،
88
00:03:17,989 –> 00:03:19,820
اگر با تعداد زیادی i/o سروکار دارید یا
89
00:03:19,820 –> 00:03:21,680
میدانید که
90
00:03:21,680 –> 00:03:23,360
به طور کلی کارهای مرتبط با وب را انجام میدهید و
91
00:03:23,360 –> 00:03:25,150
تماسهای وب زیادی انجام میدهید، باید از async استفاده کنید. و
92
00:03:25,150 –> 00:03:28,610
async در حال اجرای thread های سبز است، این
93
00:03:28,610 –> 00:03:30,920
کاملاً یک فرآیند تک رشته ای است، اما
94
00:03:30,920 –> 00:03:33,590
threading در Python به درستی رشته های سبز نیست،
95
00:03:33,590 –> 00:03:36,200
رشته های مناسب آن اکنون
96
00:03:36,200 –> 00:03:39,440
ما را به نقطه دو می رساند که
97
00:03:39,440 –> 00:03:41,209
یک تصور اشتباه دیگر است، اما همانطور که گفتم
98
00:03:41,209 –> 00:03:43,370
این یک تصور اشتباه نیست اگر شما.
99
00:03:43,370 –> 00:03:45,170
فقط کار پایتون خالص را انجام میدهید،
100
00:03:45,170 –> 00:03:47,360
پس این سوال پیش میآید که اگر threading در پایتون نقل قول بدون نقل قول
101
00:03:47,360 –> 00:03:47,660
102
00:03:47,660 –> 00:03:50,660
واقعی است، پس چرا ما نمیتوانیم فقط
103
00:03:50,660 –> 00:03:52,400
از Threading برای استفاده از چندین
104
00:03:52,400 –> 00:03:54,680
هسته استفاده کنیم که قبلاً گفتهام.
105
00:03:54,680 –> 00:03:57,440
با استفاده از کد پایتون خالص نمی توانید انجام دهید
106
00:03:57,440 –> 00:04:00,260
دلیل این امر
107
00:04:00,260 –> 00:04:02,450
قفل مفسر جهانی بدنام یا یک Gil است که از این به بعد
108
00:04:02,450 –> 00:04:05,030
به آن Gil اشاره می کنم و کاری
109
00:04:05,030 –> 00:04:07,580
که Gil انجام می دهد این است که هر
110
00:04:07,580 –> 00:04:09,739
رشته ای را که پایتون اجرا می کند مجبور می کند. بایت کد
111
00:04:09,739 –> 00:04:14,030
برای به دست آوردن یک قفل مشترک ابتدا، بنابراین اگر
112
00:04:14,030 –> 00:04:16,640
فقط کد پایتون خالص را می
113
00:04:16,640 –> 00:04:18,529
نویسید، باید آن قفل مشترک را بدست آورید و
114
00:04:18,529 –> 00:04:20,779
به همین دلیل در بهترین حالت
115
00:04:20,779 –> 00:04:23,000
فقط می توانید از یک هسته استفاده کنید، به
116
00:04:23,000 –> 00:04:23,820
همین دلیل است که وقتی
117
00:04:23,820 –> 00:04:25,950
پایتون خالص است، توصیه این است که
118
00:04:25,950 –> 00:04:27,720
از ماژول چند پردازشی استفاده کنید، زیرا این ماژول
119
00:04:27,720 –> 00:04:29,100
یک
120
00:04:29,100 –> 00:04:31,500
فرآیند جداگانه راهاندازی میکند، یک
121
00:04:31,500 –> 00:04:32,700
مفسر پایتون مجزا را
122
00:04:32,700 –> 00:04:34,140
تحت فرآیند مفسر اصلی پایتون راهاندازی میکند
123
00:04:34,140 –> 00:04:36,630
و سپس هرگونه
124
00:04:36,630 –> 00:04:38,880
ارتباطی از طریق ترشی انجام میشود
125
00:04:38,880 –> 00:04:40,860
که کاملاً در پایتون درست نیست. 3.8 اما
126
00:04:40,860 –> 00:04:43,530
این جدید است و بنابراین
127
00:04:43,530 –> 00:04:46,530
بار Ram بالاتری دارد اما به شما امکان می دهد از
128
00:04:46,530 –> 00:04:49,170
چندین هسته در رایانه خود حتی برای
129
00:04:49,170 –> 00:04:51,480
کدهای پایتون خالص استفاده کنید زیرا به معنای واقعی کلمه
130
00:04:51,480 –> 00:04:53,750
چندین نمونه از پایتون را اجرا می کند.
131
00:04:53,750 –> 00:04:56,310
با این حال، همانطور که قبلاً گفتم، اگر شما
132
00:04:56,