У меня есть задание для моего курса в Python.
Вопрос в следующем:
Вы напишите программу, создающую несколько процессов (p = 10). Каждый процесс получит целочисленное значение (y) и вычислит значение y, умноженное на 4 (y * 4). Набор значений y представляет собой список целых чисел [0, 1, 2, 3, 4, 5]. Вы должны использовать пул процессов, поэтому вам нужно отобразить эти 10 процессов, чтобы получить список из y целых чисел. Сделайте следующее:
Ваша программа должна распечатать следующие три. (1) Распечатайте оригинальный список. (2) Вывести имя каждого запущенного процесса и его выходные данные y * 4 в случайном порядке выполнения
Вывод (1): Список ввода: [0, 1, 2, 3, 4, 5]
Вывод (2): Вывод в случайном порядке:
Вывод PoolWorker-10: [0, 4, 8, 12, 16, 20]
Вывод PoolWorker-11: [0, 4, 8, 12, 16, 20]
Вывод PoolWorker-12: [0, 4, 8, 12, 16, 20]
Моя первая попытка была:
import time
from multiprocessing import Pool
from multiprocessing import Process, current_process
def f(number):
result=4*number
Process_name=current_process().name
print(f"Poolworker -{Process_name} output: {result} ")
return result
if __name__=='__main__':
p= Pool(processes=10)
numbers=[0,1,2,3,4,5]
result=p.map(f,numbers)
Вывод был:
Poolworker -SpawnPoolWorker-2 output: 0
Poolworker -SpawnPoolWorker-2 output: 4
Poolworker -SpawnPoolWorker-2 output: 8
Poolworker -SpawnPoolWorker-2 output: 12
Poolworker -SpawnPoolWorker-2 output: 16
Poolworker -SpawnPoolWorker-2 output: 20
Моя вторая попытка:
import time
from multiprocessing import Pool
from multiprocessing import Process, current_process
def f(*number):
numbers=list(number)
i=0
for x in numbers:
numbers[i]=4*numbers[i]
i+=1
Process_name=current_process().name
print(f"Poolworker -{Process_name}output: {numbers} ")
return numbers
if __name__ == '__main__':
array=[0,1,2,3,4,5]
p=Pool(processes=10)
result=p.map(f,array)
У меня все еще неправильный вывод с изменениями.
Как получить желаемый результат?