Вы можете использовать многопроцессорную библиотеку Python .Как отмечалось в этом превосходном ответе , вам следует выяснить, нужна ли вам многопоточность или многопоточность.
Итог : если вам нужна многопоточность, вы должны использовать multiprocessing.dummy.Если вы выполняете только задачи с интенсивным использованием процессора без ввода-вывода / зависимостей, вы можете использовать многопроцессорность.
multiprocessing.dummy - это то же самое, что и многопроцессорный модуль, но вместо него используются потоки (важное различие - использование нескольких процессов для задач с интенсивным использованием процессора; потоки для (и во время) ввода-вывода):
Настройка zip-объекта
#!/usr/bin/env python3
import numpy as np
n = 2000
xs = np.arange(n)
ys = np.arange(n) * 2
zs = np.arange(n) * 3
zip_obj = zip(xs, ys, zs)
Простой пример функции
def my_function(my_tuple):
iv, jv, kv = my_tuple
return f"{str(iv)}-{str(jv)}-{str(kv)}"
Настройка многопоточности.
from multiprocessing.dummy import Pool as ThreadPool
pool = ThreadPool(4)
data_tuple = pool.map(my_function, zip_obj)
Ваше полноепример
def my_function(my_tuple):
i, j, k = my_tuple
#declare multiple lists.. like
a = []
b = []
#...
if (i):
for items in i:
values = items['key'].split("--")
#append the values to the declared lists
a.append(values[0])
b.append(values[1])
#also other ooperations with j and k where are is a list of dicts.
if ("substring" in k):
for k, v in j["key"].items():
l = "string"
t = v
else:
for k, v in j["key2"].items():
l = k
t = v
#construct an object called content with all the lists/params like
content = {
'sub_content': {
"a":a,
"b":b,
.
.
}
}
#form a tuple. We are interested in this tuple.
return (content,t,l)
from multiprocessing.dummy import Pool as ThreadPool
pool = ThreadPool(4)
zip_obj = zip(is,js,ks)
data_tuple = pool.map(my_function, zip_obj)
# Do whatever you need to do w/ data_tuple here