Multiprocessing pool
Есть такой код (python)
from multiprocessing import Pool
line = []
for i in range(250):
line.append(i)
def test(number):
print('aaaaaaaaaaaaaaaaaaaaaa')
for _ in range(14):
def test2():
print(number)
return test2()
with Pool(5) as p:
p.map(test, line)
Сейчас он выводит, что-то такое
aaaaaaaaaaaaaaaaaaaaaa
0
aaaaaaaaaaaaaaaaaaaaaa
1
aaaaaaaaaaaaaaaaaaaaaa
2
aaaaaaaaaaaaaaaaaaaaaa
3
aaaaaaaaaaaaaaaaaaaaaa
4
aaaaaaaaaaaaaaaaaaaaaa
5
и т.д
Можно ли как-то сделать, что-бы он выводил такое:
aaaaaaaaaaaaaaaaaaaaaa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
aaaaaaaaaaaaaaaaaaaaaa
и т.д
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Как вариант, делить исходный список на блоки нужного размера, передавать каждый блок в map, после обработки каждого блока выводить строку
def test(number):
for _ in range(14):
def test2():
print(number)
return test2()
block_size = 14
print('aaaaaaaaaaaaaaaaaaaaaa')
with Pool(5) as p:
for i in range(0, len(line), block_size):
p.map(test, line[i:i+block_size])
print('aaaaaaaaaaaaaaaaaaaaaa')
Вывод:
aaaaaaaaaaaaaaaaaaaaaa
0
1
2
3
4
5
6
7
9
8
10
11
12
13
aaaaaaaaaaaaaaaaaaaaaa
14
15
16
17
18
19
20
21
22
23
24
25
26
27
aaaaaaaaaaaaaaaaaaaaaa
28
29
30
31
...