Skip to content

Commit dcb6e65

Browse files
committed
images added
1 parent 65db4ac commit dcb6e65

5 files changed

Lines changed: 55 additions & 41 deletions

File tree

‎GIL.png‎

30.5 KB
Loading

‎questions.jpg‎

113 KB
Loading

‎webinar.md‎

Lines changed: 49 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
1-
- [Процесс](#org5462f95)
2-
- [Поток](#orgee5cb08)
3-
- [Что можно узнать про процесс?](#org0af10b3)
4-
- [создание процессов](#org3fa51d9)
5-
- [CPU-bound / IO-bound задачи](#org37135aa)
6-
- [GIL](#orgdd6460d)
7-
- [GIL](#org3bdf677)
8-
- [GIL](#org87eb7e5)
9-
- [GIL](#org285fe74)
10-
- [Практика](#org0a693c4)
11-
- [Дополнительная литература](#orge48836f)
12-
- [Что такое Celery?](#org3a64cf7)
13-
- [Практика запуска задач на Celery](#orgf34b2f0)
14-
- [Что такое map-reduce](#org672c593)
15-
- [Практика запуска map-reduce на pyspark](#org98a8d38)
16-
- [Практика запуска map-reduce на pyspark](#org5394ae7)
17-
- [Вопросы-ответы](#org9220784)
18-
19-
20-
21-
<a id="org5462f95"></a>
1+
- [Процесс](#orgdce21ae)
2+
- [Поток](#org899e90b)
3+
- [Что можно узнать про процесс?](#orgfb9a80d)
4+
- [создание процессов](#org9a5aa98)
5+
- [CPU-bound / IO-bound задачи](#orgb15f906)
6+
- [GIL](#org0a72ae4)
7+
- [GIL](#orgc07038f)
8+
- [GIL](#orgf68f849)
9+
- [GIL](#org590eacd)
10+
- [Практика](#orgffa42c4)
11+
- [Дополнительная литература](#orgd9c5aae)
12+
- [Что такое Celery?](#orge2ecbad)
13+
- [Практика запуска задач на Celery](#org959a42c)
14+
- [Практика запуска задач на Celery](#org6ad8e52)
15+
- [Что такое map-reduce](#orgf8b3195)
16+
- [Практика запуска map-reduce на pyspark](#org225a94f)
17+
- [Практика запуска map-reduce на pyspark](#org68827c3)
18+
- [Вопросы-ответы](#org48e2a02)
19+
20+
21+
22+
<a id="orgdce21ae"></a>
2223

2324
# Процесс
2425

@@ -31,7 +32,7 @@
3132
Переключение между процессами происходит на уровне ядра.
3233

3334

34-
<a id="orgee5cb08"></a>
35+
<a id="org899e90b"></a>
3536

3637
# Поток
3738

@@ -41,7 +42,7 @@
4142
Переключение между потоками может происходить как на уровне ядра, так и на уровне пользователя (процесса).
4243

4344

44-
<a id="org0af10b3"></a>
45+
<a id="orgfb9a80d"></a>
4546

4647
# Что можно узнать про процесс?
4748

@@ -54,7 +55,7 @@ ls -l /proc/<PID>/
5455
```
5556

5657

57-
<a id="org3fa51d9"></a>
58+
<a id="org9a5aa98"></a>
5859

5960
# создание процессов
6061

@@ -64,15 +65,15 @@ ls -l /proc/<PID>/
6465
- **CreateProcess:** Win2k-системы
6566

6667

67-
<a id="org37135aa"></a>
68+
<a id="orgb15f906"></a>
6869

6970
# CPU-bound / IO-bound задачи
7071

7172
- **CPU-bound:** задачи, которые активно используют CPU. Арифметические операции, матричные вычисления, поиск строк, и т.д.
7273
- **IO-bound:** задачи, связанные с вводом-выводом данных. Работа с сетью, с файловыми системами, с пользовательским вводом
7374

7475

75-
<a id="orgdd6460d"></a>
76+
<a id="org0a72ae4"></a>
7677

7778
# GIL
7879

@@ -85,38 +86,38 @@ static PyThread_type_lock
8586
```
8687

8788

88-
<a id="org3bdf677"></a>
89+
<a id="orgc07038f"></a>
8990

9091
# GIL
9192

9293
GIL гарантирует интерпретатору, что только один *поток* может быть запущен в текущий момент. Это сделано для безопасной работы управления памятью, вызова расширений написанных на других языках (на C).
9394

9495

95-
<a id="org87eb7e5"></a>
96+
<a id="orgf68f849"></a>
9697

9798
# GIL
9899

99-
![img](/home/pimiento/yap/GIL.png)
100+
![img](GIL.png)
100101

101102
- sys.getcheckinterval() # -> Python2
102103
- sys.getswitchinterval() # -> Python3
103104

104105

105-
<a id="org285fe74"></a>
106+
<a id="org590eacd"></a>
106107

107108
# GIL
108109

109110
GIL замедляет CPU-bound задачи. Старая реализация GIL очень плохо работала с *CPU-bound + IO-bound* задачами. <span class="underline"><span class="underline">[Пример](https://dabeaz.blogspot.com/2010/01/python-gil-visualized.html)</span></span>, да и новая не лучше.
110111

111112

112-
<a id="org0a693c4"></a>
113+
<a id="orgffa42c4"></a>
113114

114115
# Практика
115116

116117
<span class="underline"><span class="underline">[GitHub](https://github.com/pimiento/python_threads_examples/)</span></span>
117118

118119

119-
<a id="orge48836f"></a>
120+
<a id="orgd9c5aae"></a>
120121

121122
# Дополнительная литература
122123

@@ -127,7 +128,7 @@ GIL замедляет CPU-bound задачи. Старая реализация
127128
- <span class="underline"><span class="underline">[multiprocessing](https://docs.python.org/3/library/multiprocessing.html)</span></span>
128129

129130

130-
<a id="org3a64cf7"></a>
131+
<a id="orge2ecbad"></a>
131132

132133
# Что такое Celery?
133134

@@ -136,7 +137,7 @@ GIL замедляет CPU-bound задачи. Старая реализация
136137
*Celery* это брокер задач, который позволяет в фоновом, асинхронном режиме выполнять задачи в отдельных процессах/тредах и/или на других машинах.
137138

138139

139-
<a id="orgf34b2f0"></a>
140+
<a id="org959a42c"></a>
140141

141142
# Практика запуска задач на Celery
142143

@@ -148,7 +149,16 @@ apt install rabbitmq-server
148149
- <span class="underline"><span class="underline">[Можно описывать сложные последовательности](https://docs.celeryq.dev/en/stable/getting-started/next-steps.html#groups)</span></span>
149150

150151

151-
<a id="org672c593"></a>
152+
<a id="org6ad8e52"></a>
153+
154+
# Практика запуска задач на Celery
155+
156+
```shell
157+
158+
```
159+
160+
161+
<a id="orgf8b3195"></a>
152162

153163
# Что такое map-reduce
154164

@@ -159,7 +169,7 @@ apt install rabbitmq-server
159169
3. Reduce — для каждого ключа выполнить некоторую функцию над всеми данными в этом ключе
160170

161171

162-
<a id="org98a8d38"></a>
172+
<a id="org225a94f"></a>
163173

164174
# Практика запуска map-reduce на pyspark
165175

@@ -169,7 +179,7 @@ apt install rabbitmq-server
169179
- <span class="underline"><span class="underline">[reducer.py](https://github.com/pimiento/python_threads_examples/blob/main/reducer.py)</span></span>
170180

171181

172-
<a id="org5394ae7"></a>
182+
<a id="org68827c3"></a>
173183

174184
# Практика запуска map-reduce на pyspark
175185

@@ -191,8 +201,8 @@ apt install rabbitmq-server
191201
```
192202

193203

194-
<a id="org9220784"></a>
204+
<a id="org48e2a02"></a>
195205

196206
# Вопросы-ответы
197207

198-
![img](/home/pimiento/yap/questions.jpg)
208+
![img](questions.jpg)

‎webinar.org‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
* GIL
4646
GIL гарантирует интерпретатору, что только один /поток/ может быть запущен в текущий момент. Это сделано для безопасной работы управления памятью, вызова расширений написанных на других языках (на C).
4747
* GIL
48-
[[file:///home/pimiento/yap/GIL.png]]
48+
[[file:GIL.png]]
4949
- sys.getcheckinterval() # -> Python2
5050
- sys.getswitchinterval() # -> Python3
5151
* GIL
@@ -68,6 +68,10 @@
6868
apt install rabbitmq-server
6969
#+END_SRC
7070
- __[[https://docs.celeryq.dev/en/stable/getting-started/next-steps.html#groups][Можно описывать сложные последовательности]]__
71+
* Практика запуска задач на Celery
72+
#+begin_src shell :export code
73+
74+
#+end_src
7175
* Что такое map-reduce
7276
Это процесс решения больших задач при помощи разбивки данных на части и решения задач с частями данных на разных машинах. MapReduce состоит из обязательных шагов:
7377
1. Map — разбить данные на блоки (присвоить каждой записи некоторый ключ блока)
@@ -102,4 +106,4 @@
102106

103107
* Вопросы-ответы
104108
#+ATTR_LATEX: :width .6\textwidth
105-
[[file:///home/pimiento/yap/questions.jpg]]
109+
[[file:questions.jpg]]

‎webinar.pdf‎

1.43 KB
Binary file not shown.

0 commit comments

Comments
 (0)