У меня есть концептуально простой код, который я хочу распараллелить, но все остальные потоки, о которых я узнал, слишком сложны, и я не понимаю, как применять их в моем случае, или даже если они применимы.
В моем коде функция с несколькими аргументами вызывается через некоторое время l oop и возвращает и выходные данные, и условие выхода из l oop. Я хочу распараллелить время l oop. Я использую Python 3.7.3.
Вот упрощенный пример:
import multiprocessing as mp
import numpy as np
import time
def foo(i, arg1, arg2):
n = np.random.rand()
n = arg1*n + arg2
if n > 0.9:
stop = True
else:
stop = False
return [i, n], stop
if __name__ == '__main__':
i = 0
stop = False
output = list()
while not stop:
out, stop = foo(i, 1, 0)
i = i + 1
if not stop:
output.append(out)
print(np.asarray(output))
Вывод:
[[ 0. 0.25295033]
[ 1. 0.53795096]
[ 2. 0.48774803]
[ 3. 0.09281972]
[ 4. 0.75053227]
[ 5. 0.30367072]
[ 6. 0.57043762]
[ 7. 0.4589554 ]
[ 8. 0.33231446]
[ 9. 0.76805717]
[10. 0.22486246]
[11. 0.69499273]
[12. 0.67616563]]
РЕДАКТИРОВАТЬ. Я хотел бы "поднять" эту ветку, потому что это то, что мне действительно нужно, и я не могу сделать это самостоятельно. Мета-этикет говорит, что я должен редактировать, добавляя ценность к вопросу, но я не думаю, что мог бы добавить что-то еще: мне просто нужно распараллелить представленный код. Буду очень признателен за любые (практические) отзывы.