Простой способ выполнения вашего кода с использованием нескольких процессов может состоять в использовании multiprocessing.Pool
для создания sh пула работников (в соответствии с количеством ядер ЦП, доступных на вашем компьютере), затем map
ваш items
для функции, которую вы хотите вызвать:
import multiprocessing as mp
def try_my_operation(i):
if i <= 10:
return i
else:
return i + 1000
if __name__ == "__main__":
items = range(50)
with mp.Pool(processes=4) as pool:
df = pool.map(try_my_operation, items)
print(df)
Выход:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049]
Обратите внимание, что я изменил функцию для возврата значение, а не добавление в глобальный список, чтобы избежать сложности разделения состояния между параллельными процессами.