Можно ли соединить информацию из разных процессов в 1 список
Необходимо объединить списки из 4 процессов в 1, возможно ли это и как это сделать?
if __name__ == '__main__':
cpus = multiprocessing.cpu_count()
if length % cpus == 0:
pass
proc_1 = Process(target=get_mes, args=(m_id[0:length//2],1,))#m_id[0:length//2
proc_1.start()
proc_2 = Process(target=get_mes, args=(m_id[length // 2*2:(length // 2)*3], 2,))
proc_2.start()
proc_3 = Process(target=get_mes, args=(m_id[length // 2*3:(length // 2)*4], 4,))
proc_3.start()
get_mes(m_id[length//2:(length//2)*2],0)
Ответы (1 шт):
Автор решения: Namerek
→ Ссылка
Пример к коментарию
from multiprocessing import Pool
from random import randint
def simple_rand(a, b, c):
return (a + b + c) * randint(2, 5)
item_list = [(1, 3, 5,), (8, 9, 10)] * 50
if __name__ == '__main__':
with Pool(8) as pool:
new_item_list = [item for item in pool.starmap(simple_rand, item_list)]
print(new_item_list)
UPD:
на счет разбить на части (хотя это уже другой вопрос)
lst = [5] * 15
def chunks(iterable, chunk_size: int):
for i in range(0, len(iterable), chunk_size):
yield iterable[i:i + chunk_size]
print([item for item in chunks(lst, len(lst) // 4 + bool(len(lst) % 4))])
# [[5, 5, 5, 5], [5, 5, 5, 5], [5, 5, 5, 5], [5, 5, 5]]