در این مطلب، ویدئو ماژول سطح پایین _thread پایتون، تخصیص، به دست آوردن و رها کردن قفل ها، اشیاء متقابل انحصاری با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:10:24
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,030 –> 00:00:02,040
سلام و دوباره به قسمت بعدی
2
00:00:02,040 –> 00:00:04,170
در سری میانی فراتر از پایتون
3
00:00:04,170 –> 00:00:06,750
در این مینی سری پنج قسمتی خوش آمدید،
4
00:00:06,750 –> 00:00:08,910
ما می خواهیم به موضوعاتی بپردازیم
5
00:00:08,910 –> 00:00:11,070
از دانش صفر فرض شده تا
6
00:00:11,070 –> 00:00:13,080
اطمینان از استفاده از آنها و دانستن زمان و
7
00:00:13,080 –> 00:00:15,929
نحوه استفاده از آنها و همچنین دانستن اینکه چه زمانی از آنها
8
00:00:15,929 –> 00:00:18,270
استفاده نکنیم. ما رویکرد متفاوتی نسبت به آنها خواهیم داشت،
9
00:00:18,270 –> 00:00:20,699
به این صورت که روی
10
00:00:20,699 –> 00:00:22,710
استفاده از رشته ها و درک
11
00:00:22,710 –> 00:00:24,810
نحو در مثال های بزرگتر و بزرگتر تمرکز می کنیم
12
00:00:24,810 –> 00:00:26,490
و سپس
13
00:00:26,490 –> 00:00:28,650
پس از کدنویسی و داشتن داربستی که روی آن آویزان شدیم، دانش دقیق را تا انتها پر می کنیم.
14
00:00:28,650 –> 00:00:31,500
15
00:00:31,500 –> 00:00:34,380
دو ماژول در
16
00:00:34,380 –> 00:00:36,450
پایتون وجود دارد که با استفاده از آنها میتوانید از
17
00:00:36,450 –> 00:00:39,360
18
00:00:39,360 –> 00:00:42,000
رشتهها استفاده کنید، API رشتههای سطح پایین و همچنین ماژول رشتهای سطح بالاتر
19
00:00:42,000 –> 00:00:44,969
در کد برنامه،
20
00:00:44,969 –> 00:00:47,010
تقریباً مطمئن هستید که از
21
00:00:47,010 –> 00:00:49,590
ماژول رشتهسازی در سطح بالاتری استفاده خواهید کرد.
22
00:00:49,590 –> 00:00:51,750
در این قسمت با API
23
00:00:51,750 –> 00:00:54,030
threading سطح پایین زیر خط شروع میشود،
24
00:00:54,030 –> 00:00:57,480
زیرا استفاده از آن
25
00:00:57,480 –> 00:01:00,210
برای سادهترین نمونهها آسانتر است و پس از آن
26
00:01:00,210 –> 00:01:02,340
تجربهای عملی به ما میدهد. r
27
00:01:02,340 –> 00:01:04,920
که میتوانیم ماژول threading را
28
00:01:04,920 –> 00:01:07,400
در اینجا حل کنیم، میتوانید مستندات Python 3:8
29
00:01:07,400 –> 00:01:09,810
را برای هر دو ببینید، زیرا میبینید
30
00:01:09,810 –> 00:01:12,360
که ماژول
31
00:01:12,360 –> 00:01:14,880
رشته زیرخط روشهای بسیار کمتری دارد.
32
00:01:14,880 –> 00:01:17,610
33
00:01:17,610 –> 00:01:19,170
34
00:01:19,170 –> 00:01:21,350
فرآیندهای
35
00:01:21,350 –> 00:01:22,560
چند
36
00:01:22,560 –> 00:01:25,070
پردازشی مؤلفههای نشانههای همزمانی
37
00:01:25,070 –> 00:01:27,600
استخرهای اجرایی و هر یک از زبانهای دیگر
38
00:01:27,600 –> 00:01:29,939
مرتبط با همزمانی،
39
00:01:29,939 –> 00:01:33,360
اجازه دهید مستقیماً به کدی بپریم،
40
00:01:33,360 –> 00:01:36,329
بیایید رشته زیرخط واردات مفسر را
41
00:01:36,329 –> 00:01:39,780
به عنوان رشته باز کنیم تا هنگام
42
00:01:39,780 –> 00:01:42,810
تایپ و زمان وارد کردن آسانتر شود در اینجا ما در حال
43
00:01:42,810 –> 00:01:44,909
ایجاد یک تابع شمارنده هستیم. که
44
00:01:44,909 –> 00:01:48,930
دو آرگومان ID را می گیرد و
45
00:01:48,930 –> 00:01:51,210
خط دوم تابع را بر روی
46
00:01:51,210 –> 00:01:54,540
عددی که در شمارش ارائه می کنیم تکرار می کند، بنابراین اگر 10 عدد را وارد کنیم
47
00:01:54,540 –> 00:01:57,329
، کد داخل حلقه for
48
00:01:57,329 –> 00:02:00,719
ده بار اجرا می شود، یک
49
00:02:00,719 –> 00:02:03,630
رشته F در کد رشته های F در داخل curly چاپ می کنیم.
50
00:02:03,630 –> 00:02:07,110
براکت ها به عنوان دستورات اجرا می شوند، بنابراین
51
00:02:07,110 –> 00:02:09,840
آنچه چاپ می شود مقدار ID است
52
00:02:09,840 –> 00:02:12,300
توجه داشته باشید که این اولین آرگومان است که ما
53
00:02:12,300 –> 00:02:13,590
به سرطان منتقل می کنیم
54
00:02:13,590 –> 00:02:16,470
و سپس یک فلش با مقدار I و سپس
55
00:02:16,470 –> 00:02:19,500
یک خط جدید در زمان نقطه خواب چاپ می کند، یکی
56
00:02:19,500 –> 00:02:22,230
برنامه را برای یک ثانیه مکث می کند
57
00:02:22,230 –> 00:02:24,510
و ما این کار را برای شبیه سازی کار
58
00:02:24,510 –> 00:02:27,599
انجام شده توسط یک برنامه انجام می دهیم که
59
00:02:27,599 –> 00:02:30,090
اجرای این کد یک ثانیه طول می کشد. انجام دهید این است
60
00:02:30,090 –> 00:02:32,459
که یک حلقه for دیگر برای I در محدوده
61
00:02:32,459 –> 00:02:35,099
پنج ایجاد کنید و سپس از مقدار I
62
00:02:35,099 –> 00:02:38,099
به عنوان ورودی برای فراخوانی تابع شمارنده خود استفاده می کنیم
63
00:02:38,099 –> 00:02:40,950
و با عبور از پنج، برنامه ما
64
00:02:40,950 –> 00:02:43,470
از صفر تا سقوط شمارش می کند، همانطور که می بینید
65
00:02:43,470 –> 00:02:45,989
چه اتفاقی می افتد. که برنامه ما
66
00:02:45,989 –> 00:02:48,930
از صفر تا چهار با یک
67
00:02:48,930 –> 00:02:51,120
مکث 1 ثانیه ای بین هر شمارش شمارش می کند و
68
00:02:51,120 –> 00:02:53,640
این کار را 5 بار انجام می دهیم تا
69
00:02:53,640 –> 00:02:56,160
تفاوت رشته ها را بدون در
70
00:02:56,160 –> 00:02:58,590
نظر گرفتن چیزی در مورد آنها ببینیم، در عوض
71
00:02:58,590 –> 00:03:00,959
کد خود را با یک تفاوت جزئی
72
00:03:00,959 –> 00:03:03,560
در حلقه for اجرا می کنیم.
73
00:03:09,580 –> 00:03:12,410
با فراخوانی ساده
74
00:03:12,410 –> 00:03:15,560
تابع شمارنده خود، پنج رشته را شروع کرده و اجرا می کنیم،
75
00:03:15,560 –> 00:03:18,950
یک رشته برای هر گروه از
76
00:03:18,950 –> 00:03:22,010
هیچ تا چهار شمارش، به عبارت دیگر،
77
00:03:22,010 –> 00:03:25,370
هر مقدار در سمت چپ در
78
00:03:25,370 –> 00:03:27,920
داخل پرانتز مربع به عنوان یک رشته عمل می کند.
79
00:03:27,920 –> 00:03:30,410
80
00:03:30,410 –> 00:03:32,750
به اس tart thread جدید اولین
81
00:03:32,750 –> 00:03:35,570
پارامتر است که تابع ما است که باید فراخوانی شود
82
00:03:35,570 –> 00:03:38,300
و هر آرگومان به
83
00:03:38,300 –> 00:03:41,480
عنوان پارامتر دوم به صورت تاپلی ارسال می شود، بنابراین اگر
84
00:03:41,480 –> 00:03:43,910
به یاد بیاورید ما در حال عبور از I هستیم و
85
00:03:43,910 –> 00:03:46,730
هر بار که اکنون می بینید تا چهار می
86
00:03:46,730 –> 00:03:49,700
شماریم. بسیار متفاوت است، ما
87
00:03:49,700 –> 00:03:52,460
هنوز شمارش از صفر تا چهار را داریم، اما
88
00:03:52,460 –> 00:03:55,010
مدت زمانی که برنامه طول می کشد تا اجرا
89
00:03:55,010 –> 00:03:58,400
شود بسیار کاهش یافته است، زیرا هر مجموعه از
90
00:03:58,400 –> 00:04:01,130
صفر تا چهار شمارش به طور همزمان اتفاق می افتد،
91
00:04:01,130 –> 00:04:03,940
به عبارت دیگر
92
00:04:03,940 –> 00:04:07,340
ظاهراً به معنای
93
00:04:07,340 –> 00:04:09,530
همزمان اجرای همزمان با
94
00:04:09,530 –> 00:04:13,190
فرض ما است. زمانی که نقطه خواب برای یک
95
00:04:13,190 –> 00:04:16,370
ثانیه زمان پردازش را مسخره میکند،
96
00:04:16,370 –> 00:04:18,680
میتوانیم ببینیم که برنامه ما
97
00:04:18,680 –> 00:04:21,160
در اصل سریعتر بسیار سریعتر پردازش شده است،
98
00:04:21,160 –> 00:04:23,870
توجه داشته باشید که مقدار موجود در براکتهای مربع در
99
00:04:23,870 –> 00:04:26,240
سمت چپ، عجیب به نظر میرسد، یک
100
00:04:26,240 –> 00:04:28,910
جنبه غیر معمول رشتهها این است که
101
00:04:28,910 –> 00:04:31,070
خروجی از بین پنج تهدید به صورت موازی اجرا می شوند
102
00:04:31,070 –> 00:04:33,620
و بنابراین با هم مخلوط
103
00:04:33,620 –> 00:04:35,330
می شوند، همه آنها در یک فرآیند اجرا می شوند
104
00:04:35,330 –> 00:04:38,390
و چیزی که متوجه خواهید شد این است که ترتیب
105
00:04:38,390 –> 00:04:41,750
از اجرا به اجرا تغییر می کند، این کار را تکرار کنید.
106
00:04:41,750 –> 00:04:43,520
خودتان متوجه شوید منظور من چیست،
107
00:04:43,520 –> 00:04:46,490
108
00:04:46,490 –> 00:04:49,280
اگر یک
109
00:04:49,280 –> 00:04:51,530
رشته یک متغیر جهانی را
110
00:04:51,530 –> 00:04:53,840
تغییر دهد، همه
111
00:04:53,840 –> 00:04:55,700
رشته ها در برنامه شما فضای حافظه جهانی یکسانی دارند که این تغییر توسط هر رشته دیگر در برنامه شما در طرف مقابل مشاهده می شود،
112
00:04:55,700 –> 00:04:57,620
این یکی از دلایلی است که چرا
113
00:04:57,620 –> 00:05:00,500
برنامه نویسی رشته تا این حد است. اگر دو
114
00:05:00,500 –> 00:05:03,440
رشته همزمان یک شی را تغییر دهند می ترسیم یکی
115
00:05:03,440 –> 00:05:05,510
از دو تغییر از بین برود یا
116
00:05:05,510 –> 00:05:08,690
شی می تواند بی سر و صدا خراب شود، قفل
117
00:05:08,690 –> 00:05:11,510
در برنامه نویسی رشته به این صورت است که چگونه از
118
00:05:11,510 –> 00:05:14,450
اطراف این رشته ها عبور می کنیم، می توانیم یک قفل
119
00:05:14,450 –> 00:05:17,360
برای یک شی به دست آوریم و سپس در حالی که آن رشته
120
00:05:17,360 –> 00:05:19,970
دارای قفل است. شی قفل شده است، رشته های دیگر
121
00:05:19,970 –> 00:05:23,030
نمی توانند شی قفل شده را تغییر دهند،
122
00:05:23,030 –> 00:05:25,310
ته