-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmultiprocessing-tips-1.py
More file actions
37 lines (29 loc) · 1004 Bytes
/
multiprocessing-tips-1.py
File metadata and controls
37 lines (29 loc) · 1004 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import os
from multiprocessing import Process
from time import sleep
from random import uniform
from typing import Any, NoReturn
def get_info(data: Any) -> NoReturn:
"""
Функция для демонстрации конкурентности в Python на абстракции multiprocessing.Process
"""
pid = os.getpid()
to_sleep = uniform(0.2, 1.1)
sleep(to_sleep)
print(f"id: {data}, pid: {pid}, sleep: {to_sleep}")
def main() -> NoReturn:
"""
Объявить процессы с назначенной функцией для обработки,
запустить процессы, дождаться выполнения
"""
print("start procs")
procs = []
numbers_procs = [i for i in range(20)]
for num in numbers_procs:
proc = Process(target=get_info, args=(num, ))
procs.append(proc)
proc.start()
print("to join")
_ = [proc.join() for proc in procs]
if __name__ == "__main__":
main()