[ОБНОВЛЕНО]
Если вы хотите использовать многопроцессорность внутри ноутбуков jupyter, вы хотите использовать многопроцессорный пакет вместо встроенного multiprocessing
(есть известная проблема с основной функцией ноутбуков jupyter vs multiprocessing)
Создайте отдельный файл .py
с вашей функцией magi c. Если вы хотите сделать это в своем блокноте - используйте что-то вроде этого в отдельной ячейке кода:
%%writefile magic_functions.py
def magic_function(f):
return f+10
def process_frame(f):
# changed your logic here as I couldn't repro it
return f, magic_function(f)
OUT: Написание magic_functions.py
А затем запустите свой код параллельно:
from tqdm import tqdm
from multiprocess import Pool
from magic_functions import process_frame
frames_list = [0, 1, 2, 3, 4, 5, 6]
max_pool = 5
with Pool(max_pool) as p:
pool_outputs = list(
tqdm(
p.imap(process_frame,
frames_list),
total=len(frames_list)
)
)
print(pool_outputs)
new_dict = dict(pool_outputs)
print("dict:", new_dict)
ВЫХОД:
100%|████████████████████████████████████████████████████████████████████████████████████| 7/7 [00:00<00:00, 37.63it/s]
[(0, 10), (1, 11), (2, 12), (3, 13), (4, 14), (5, 15), (6, 16)]
dict: {0: 10, 1: 11, 2: 12, 3: 13, 4: 14, 5: 15, 6: 16}