С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
261 / 36 / 7
Регистрация: 03.02.2025
Сообщений: 123

Не работает multiprocessing

23.06.2025, 02:57. Показов 2017. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть такой простой код с multiprocessing на один процесс.
Python
1
2
3
4
5
6
7
8
9
10
11
from multiprocessing import Process, Queue
 
def worker(arg, q):
    q.put(arg * 2)
 
if __name__ == '__main__':
    q = Queue()
    p = Process(target=worker, args=(5, q))
    p.start()
    p.join()
    print(f"Результат: {q.get()}")
Он работает. Но если его усложнить до такого,
Python
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import cv2
import datetime
from multiprocessing import Process, Queue
 
# создадим объект VideoCapture для захвата видео
cap = cv2.VideoCapture('Тестовое видео.mp4')
 
# Если не удалось открыть файл, выводим сообщение об ошибке
if cap.isOpened() == False:
    print('Не возможно открыть файл')
 
def neg(freim, q):
    img_bgr = freim
    height, width, _ = img_bgr.shape
    for i in range(0, height - 1):
        for j in range(0, width - 1):
            # Get the pixel value
            pixel = img_bgr[i, j]
            pixel[0] = int(pixel[0]/2)
            pixel[1] = int(pixel[1]/2)
            pixel[2] = int(pixel[2]/2)
            # Store new values in the pixel
            img_bgr[i, j] = pixel
    q.put(img_bgr)
 
 
 
if __name__ == "__main__":
 
    while cap.isOpened():
        start = datetime.datetime.now()
        # поочередно считываем кадры видео
        fl, img = cap.read()
        # если кадры закончились, совершаем выход
        if img is None:
            break
        # выводим текущий кадр на экран
 
        q = Queue()
        process1 = Process(target=neg, args=(img, q))
        process1.start()
        process1.join()
 
        cv2.imshow("Cat", q)
        # при нажатии клавиши "q", совершаем выход
        if cv2.waitKey(25) == ord('q'):
            break
        finish = datetime.datetime.now()
        print('Время работы: ' + str(finish - start))
 
# освобождаем память от переменной cap
cap.release()
# закрываем все открытые opencv окна
cv2.destroyAllWindows()
то он зависает и не чего не делает. Помогите разобраться. Пока использую один процесс, потом доведу до 16 процессов.
Видео для примера можно взять отсюда
https://disk.yandex.ru/i/gtXCiLbzv5vbmg
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.06.2025, 02:57
Ответы с готовыми решениями:

Multiprocessing Queue vs multiprocessing.Manager Queue
Если кому интересно: обычная Queue из мультитпроцессинга имеет ограничение по размеру, если туда...

Код с multiprocessing и очередью Queue после компиляции через pyinstaller работает неправильно
Добрый день. На форуме первый раз. Если что не так оформлю, не рубите голову сразу. На Python...

Multiprocessing
В общем и целом, сбахал простейший скрипт для того, чтобы опробовать класс Process() из модуля...

11
 Аватар для abit
868 / 527 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
23.06.2025, 03:10
на 39-й строчке возник вопрос
q = Queue()
это что запуск новой очереди для каждого кадра, ну это ппц

Добавлено через 1 минуту
Создайте ОДНУ очередь и ОДИН процесс заранее
1
261 / 36 / 7
Регистрация: 03.02.2025
Сообщений: 123
23.06.2025, 03:15  [ТС]
Ну мне нужно что бы каждый кадыр обрабатывался в отдельном процессе. У меня на процессоре 16 потоков. Хочу что бы программа загружала все 16 потоков.
Цитата Сообщение от abit Посмотреть сообщение
Создайте ОДНУ очередь и ОДИН процесс заранее
Подскажи пожалуйста, как это сделать?
0
 Аватар для abit
868 / 527 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
23.06.2025, 03:16
Python
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import cv2
import datetime
import numpy as np
from multiprocessing import Process, Queue
 
def process_frame(freim):
    return cv2.convertScaleAbs(freim, alpha=0.5, beta=0)
 
if __name__ == "__main__":
    cap = cv2.VideoCapture('Тестовое видео.mp4')
    if not cap.isOpened():
        print('Не возможно открыть файл')
        exit()
 
    q = Queue(maxsize=1)  # максимум 1 кадр в очереди
    current_frame = None
    
    def worker():
        while True:
            frame = q.get()
            if frame is None:
                break
            result = process_frame(frame)
            q.put(result) 
 
    p = Process(target=worker)
    p.start()
 
    while cap.isOpened():
        start = datetime.datetime.now()
        
        # Читаем кадр
        ret, frame = cap.read()
        if not ret:
            break
 
        if q.empty():
            q.put(frame)
            current_frame = frame
 
        result = None
        if not q.empty() and q.qsize() > 1:
            result = q.get()
        
        display_frame = result if result is not None else current_frame
        
        cv2.imshow("Video Processing", display_frame)
        
        if cv2.waitKey(1) == ord('q'):
            break
            
        print('Время обработки кадра:', datetime.datetime.now() - start)
 
    q.put(None)
    p.join()
    
    cap.release()
    cv2.destroyAllWindows()
0
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
23.06.2025, 07:03
Eduard1977, с циклами for при попиксельной обработке изображений у вас и 100500 процессов будут работать медленно.
Используйте функции Opencv и все будет быстро.
2
261 / 36 / 7
Регистрация: 03.02.2025
Сообщений: 123
23.06.2025, 23:11  [ТС]
Здравствуйте.
abit, ваш код почему то выдаёт одну картинку (похоже что эта первая картинка). Проигрывания видео не происходит. Но строки информационные показывают.
Python
1
2
3
4
5
6
Время обработки кадра: 0:00:00.016014
Время обработки кадра: 0:00:00.016022
Время обработки кадра: 0:00:00.015511
Время обработки кадра: 0:00:00.016015
Время обработки кадра: 0:00:00.004003
Время обработки кадра: 0:00:00.012011
Цитата Сообщение от u235 Посмотреть сообщение
Eduard1977, с циклами for при попиксельной обработке изображений у вас и 100500 процессов будут работать медленно.
Используйте функции Opencv и все будет быстро.
Мне нужно что бы программа по полной загружала процессор. Потому что в будущем мне может потребоваться сложная обработка кадров видео, и Opencv может в дальнейшем мне не помочь. Из за этого я делаю ситуацию которая загрузит процессор по полной, без участия Opencv.
Миниатюры
Не работает multiprocessing  
0
261 / 36 / 7
Регистрация: 03.02.2025
Сообщений: 123
25.06.2025, 01:07  [ТС]
Здравствуйте. Попробую описать что мне нужно от программы, может кто поможет.
Надо создать программу которая использует мультипроцессорность. У меня 16 потоков на процессоре. Я хочу их все загрузить. Программа делает следующее. Она открывает видеофайл, обрабатывает его и записывает на диск. Обрабатывание если не использовать Opencv может занимать много времени из-за этого нужно использовать мультипроцессорность. Обработку видео я хочу делать в отдельных процессах. Следующим образом. Программа берёт первый фрейм и обрабатывает его в первом процессе. Сразу же берт второй фрем и обрабатывает во втором процессе и т.д. до 16 процесса. После этого программа ждёт пока все процессы обработают свои фреймы. После сохраняет все обработанные фреймы на диск, например в MP4. Дальше снова читает видео фреймы с видеофайла. Берет 17 фрейм запускает обработку на первом процессе и т. д. до 32 фрейма который будет запущен на 16 процессе. После обработки сохраняет на диске. И так до конца видеофайла.

Добавлено через 8 минут
Вот программу которую нужно переделать. Функция neg это и есть обработка кадров. Просьба оставить ей без изменения.
Python
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
38
39
40
41
42
43
44
45
46
47
48
49
import cv2
import datetime
 
 
# создадим объект VideoCapture для захвата видео
cap = cv2.VideoCapture('E:\Obshaia papka VMashina\\Кассета 8 - 2.mp4')
 
# Если не удалось открыть файл, выводим сообщение об ошибке
if cap.isOpened() == False:
    print('Не возможно открыть файл')
 
 
# создадим функцию для отображения отрицательного изображения
def neg(freim):
    img_bgr = freim
    height, width, _ = img_bgr.shape
    for i in range(0, height - 1):
        for j in range(0, width - 1):
            # Get the pixel value
            pixel = img_bgr[i, j]
            pixel[0] = 255 - pixel[0]
            pixel[1] = 255 - pixel[1]
            pixel[2] = 255 - pixel[2]
            # Store new values in the pixel
            img_bgr[i, j] = pixel
    return img_bgr
 
# Пока файл открыт
while cap.isOpened():
    start = datetime.datetime.now()
    # поочередно считываем кадры видео
    fl, img = cap.read()
    # если кадры закончились, совершаем выход
    if img is None:
        break
    # выводим текущий кадр на экран
    #img = neg(img)
    img = neg(img)
    cv2.imshow("Cat", img)
    # при нажатии клавиши "q", совершаем выход
    if cv2.waitKey(25) == ord('q'):
        break
    finish = datetime.datetime.now()
    print('Время работы: ' + str(finish - start))
 
# освобождаем память от переменной cap
cap.release()
# закрываем все открытые opencv окна
cv2.destroyAllWindows()
0
 Аватар для Tanya2007
593 / 230 / 72
Регистрация: 13.05.2020
Сообщений: 412
27.06.2025, 11:45
Eduard1977, попробуйте вот этот код:

Python
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import cv2
import datetime
from concurrent.futures import ProcessPoolExecutor
import multiprocessing
 
 
# Создадим функцию для отображения отрицательного изображения
def neg(freim):
    start = datetime.datetime.now()
        
    img_bgr = freim
    height, width, _ = img_bgr.shape
    for i in range(0, height - 1):
        for j in range(0, width - 1):
            # Get the pixel value
            pixel = img_bgr[i, j]
            pixel[0] = 255 - pixel[0]
            pixel[1] = 255 - pixel[1]
            pixel[2] = 255 - pixel[2]
            # Store new values in the pixel
            img_bgr[i, j] = pixel
            
    finish = datetime.datetime.now()
    print('Время работы: ' + str(finish - start))
    
    return img_bgr
    
# Функция для инвертирования пикселей (выполняется на С++)
def process_frame(freim):
    start = datetime.datetime.now()
    
    # Инвертируем пиксели
    img = cv2.bitwise_not(freim)
    
    finish = datetime.datetime.now()
    print('Время работы: ' + str(finish - start))
    
    return img
 
 
if __name__ == "__main__":
    
    # Создадим объект VideoCapture для захвата видео
    cap = cv2.VideoCapture('Тестовое видео.mp4')
     
    # Если не удалось открыть файл, выводим сообщение об ошибке
    if cap.isOpened():
        
        # Получим количество ядер в машине
        number_cores = multiprocessing.cpu_count()
        
        isFrames = True
        
        # Запускаем обработку в пуле процессов
        with ProcessPoolExecutor() as process_pool:
            
            # Если конец видео, заканчиваем работу
            while isFrames:
                imgs = [None] * number_cores
                
                # Берем ровно то количество кадров, сколько ядер в машине
                for i in range(number_cores):
                    _, img = cap.read()
                    
                    if img is None:
                        isFrames = False
                        break
                        
                    imgs[i] = img
                        
                # Функция neg работает невероятно медленно
                # for result in process_pool.map(neg, imgs):
                
                # Обрабатываем полученные кадры с помощью функции process_frame
                # использует встроенные в cv2 функции обработки (работаеют на C++)
                for result in process_pool.map(process_frame, imgs):
                    cv2.imshow("Cat", result)
                    
                    # Здесь можно выполнить код по сохранению измененных кадров на диск
                        
                # При нажатии клавиши "q", совершаем выход
                if cv2.waitKey(25) == ord('q'):
                    break
                    
        # Освобождаем память от переменной cap
        cap.release()
        
        # Закрываем все открытые opencv окна
        cv2.destroyAllWindows()
        
    else:
        print('Невозможно открыть файл')
Он запускает процессы в пуле, обеспечивая тем самым параллельное выполнение. Его конечно можно улучшать и улучшать. Например, использовать asyncio совместно с multiprocessing.
1
261 / 36 / 7
Регистрация: 03.02.2025
Сообщений: 123
28.06.2025, 02:50  [ТС]
Tanya2007, Спасибо. Буду разбираться с кодом. А что это за ошибка появляется когда завершается программа? Не знаешь?
Python
1
2
3
4
Traceback (most recent call last):
  File "C:\Users\eduar\PycharmProjectsулльти процессинг негатив картинки\12.py", line 78, in <module>
    cv2.imshow("Cat", result)
cv2.error: OpenCV(4.11.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:973: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'
Добавлено через 43 минуты
Tanya2007, когда я всё таки подключил свою функцию neg то ошибок стало больше, но они появляются в конце программы. Я кажется догадываюсь из за чего эти ошибки. Что бы не было ошибок надо что бы в видеофайле фреймов было ровно кратно 16 (потому что у меня 16 потоков в процессоре, на других процессорах другое число). А когда количество фреймов другое то в конце мы получаем пустые кадры которых не существуют.
Python
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
38
39
40
41
42
concurrent.futures.process._RemoteTraceback: 
"""
Traceback (most recent call last):
  File "C:\Program Files\Python311\Lib\concurrent\futures\process.py", line 256, in _process_worker
    r = call_item.fn(*call_item.args, **call_item.kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\concurrent\futures\process.py", line 205, in _process_chunk
    return [fn(*args) for args in chunk]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\concurrent\futures\process.py", line 205, in <listcomp>
    return [fn(*args) for args in chunk]
            ^^^^^^^^^
  File "C:\Users\eduar\PycharmProjectsулльти процессинг негатив картинки\12.py", line 35, in process_frame
    img = neg(freim)
          ^^^^^^^^^^
  File "C:\Users\eduar\PycharmProjectsулльти процессинг негатив картинки\12.py", line 12, in neg
    height, width, _ = img_bgr.shape
                       ^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'shape'
"""
 
The above exception was the direct cause of the following exception:
 
Traceback (most recent call last):
  File "C:\Users\eduar\PycharmProjectsулльти процессинг негатив картинки\12.py", line 79, in <module>
    for result in process_pool.map(process_frame, imgs):
  File "C:\Program Files\Python311\Lib\concurrent\futures\process.py", line 602, in _chain_from_iterable_of_lists
    for element in iterable:
  File "C:\Program Files\Python311\Lib\concurrent\futures\_base.py", line 619, in result_iterator
    yield _result_or_cancel(fs.pop())
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\concurrent\futures\_base.py", line 317, in _result_or_cancel
    return fut.result(timeout)
           ^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\concurrent\futures\_base.py", line 449, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\concurrent\futures\_base.py", line 401, in __get_result
    raise self._exception
AttributeError: 'NoneType' object has no attribute 'shape'
 
Process finished with exit code 1
Добавлено через 26 минут
Только что пытался подсовывать видео кратное 16 фреймов. Не помогло, всё равно ошибки.

Добавлено через 18 минут
Короче, я создал видеофайл в 16 фреймов. И когда обрабатываешь этот видеофайл то информация приходит как будто 32 фрейма. Имеется ввиду строки Время работы: 0:00:00 их 32 штуки. А должно быть только 16 штук. Где то ошибка.
Python
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
38
39
40
"C:\Users\eduar\PycharmProjectsулльти процессинг негатив картинки\venv\Scripts\python.exe" "C:\Users\eduar\PycharmProjectsулльти процессинг негатив картинки\12.py" 
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00.001001
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00.001001
Время работы: 0:00:00.001001
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00.001001
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00.001001
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Время работы: 0:00:00
Traceback (most recent call last):
  File "C:\Users\eduar\PycharmProjectsулльти процессинг негатив картинки\12.py", line 80, in <module>
    cv2.imshow("Cat", result)
cv2.error: OpenCV(4.11.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:973: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'
 
 
Process finished with exit code 1
Добавлено через 29 минут
Открыл видео на 1200 фреймов, а строк "Время работы: 0:00:00.001002" количество 1216 штук. Из за этого в конце программы ошибки. Не соответствие, программа пытается прочитать не существующие фреймы.
0
261 / 36 / 7
Регистрация: 03.02.2025
Сообщений: 123
28.06.2025, 23:40  [ТС]
Tanya2007, привет. Я добавил проверки в код, тереь работает без ошибок. Но не знаю я правелно сделал проверки или можно было ещё лучше написать код. Проверки на строках 9 -11 и 35 -37 и 87 -90.
Python
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import cv2
import datetime
from concurrent.futures import ProcessPoolExecutor
import multiprocessing
 
 
# Создадим функцию для отображения отрицательного изображения
def neg(freim):
    if freim is None:                        # Если кадр не получен, выходим
        print('Не удалось прочитать кадр')
        return None
    start = datetime.datetime.now()
 
    img_bgr = freim
    height, width, _ = img_bgr.shape
    for i in range(0, height - 1):
        for j in range(0, width - 1):
            # Get the pixel value
            pixel = img_bgr[i, j]
            pixel[0] = 255 - pixel[0]
            pixel[1] = 255 - pixel[1]
            pixel[2] = 255 - pixel[2]
            # Store new values in the pixel
            img_bgr[i, j] = pixel
 
    finish = datetime.datetime.now()
    print('Время работы: ' + str(finish - start))
 
    return img_bgr
 
 
# Функция для инвертирования пикселей (выполняется на С++)
def process_frame(freim):
    start = datetime.datetime.now()
    if freim is None:                        # Если кадр не получен, выходим
        print('Не удалось прочитать кадр')
        return None
    # Инвертируем пиксели
    img = cv2.bitwise_not(freim)
    #img = neg(freim)
 
    finish = datetime.datetime.now()
    print('Время работы: ' + str(finish - start))
 
    return img
 
 
if __name__ == "__main__":
 
    # Создадим объект VideoCapture для захвата видео
    cap = cv2.VideoCapture('Тестовое видео 5.mp4')
    #cap = cv2.VideoCapture('E:\Zakaz\881 Regina\Оцифровка\Кассета 1.mp4')
    # Если не удалось открыть файл, выводим сообщение об ошибке
    if cap.isOpened():
 
        # Получим количество ядер в машине
        number_cores = multiprocessing.cpu_count()
        #print(number_cores)
 
        isFrames = True
 
        # Запускаем обработку в пуле процессов
        with ProcessPoolExecutor() as process_pool:
 
            # Если конец видео, заканчиваем работу
            while isFrames:
                imgs = [None] * number_cores
 
                # Берем ровно то количество кадров, сколько ядер в машине
                for i in range(number_cores):
                    #_, img = cap.read()
                    ret, img = cap.read()
 
                    if img is None:
                        isFrames = False
                        break
 
                    imgs[i] = img
 
                # Функция neg работает невероятно медленно
                # for result in process_pool.map(neg, imgs):
 
                # Обрабатываем полученные кадры с помощью функции process_frame
                # использует встроенные в cv2 функции обработки (работаеют на C++)
                #for result in process_pool.map(process_frame, imgs):
                for result in process_pool.map(process_frame, imgs):
                    if result is None:
                        print('Не удалось прочитать кадр')
                        isFrames = False
                        break
                    cv2.imshow("Cat", result)
 
                    # Здесь можно выполнить код по сохранению измененных кадров на диск
 
                # При нажатии клавиши "q", совершаем выход
                if cv2.waitKey(25) == ord('q'):
                    break
 
        # Освобождаем память от переменной cap
        cap.release()
 
        # Закрываем все открытые opencv окна
        cv2.destroyAllWindows()
 
    else:
        print('Невозможно открыть файл')
0
 Аватар для Tanya2007
593 / 230 / 72
Регистрация: 13.05.2020
Сообщений: 412
30.06.2025, 10:15
Eduard1977, Моя ошибка в строке imgs = [None] * number_cores. В коде не учла, что если кадры закончились, то в пул передается массив с элементами None.

Чтобы ошибка ушла, вместо строки imgs = [None] * number_cores, напишите imgs = [].
И вместо imgs[i] = img, напишите imgs.append(img). В остальном мой код остается прежним.
1
261 / 36 / 7
Регистрация: 03.02.2025
Сообщений: 123
30.06.2025, 23:24  [ТС]
Tanya2007, Привет. После последнего исправления твоего кода он начал работать правильно. Спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.06.2025, 23:24
Помогаю со студенческими работами здесь

Multiprocessing mysql
Господа, может кто-то поделиться знаниями и/или примером выполнения параллельного обращения к...

Multiprocessing vs multithreding
Здравствуйте! В python есть такие штуки как multithreding и multiprocessing. Но пока не нашел,...

Multiprocessing и тормозящий поток
Здравствуйте! Написал маленькую прогу которая выполняет расчеты и в конце пишет результаты в...

Запись в файл multiprocessing
Как организовать запись в файл, чтобы каждый процесс ожидал завершения предыдущего? from...

Многопоточность в Python, thread или multiprocessing
Приветствую всех читающих. По необходимости понадобилась многопоточность в python. Перелопатил горы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru