Мониторинг вывода функции, распараллеленной через ParallelMap - PullRequest
2 голосов
/ 01 ноября 2011
mle[data_] := ArgMin[
              {-LogLikelihood[twoState[a, b, 60, 0.2], data],  
               Element[{a, b}, Reals] && a > 0 && b > 0}, 
              {a, b}]

ParallelMap[mle, {BG6, BG3, DC5}]

Я выполняю функцию mle параллельно над независимыми наборами данных, используя ParallelMap.Я хотел бы видеть вывод, когда каждая параллельная оценка заканчивается.Я посмотрел документацию по Monitor, но мне не ясно, как ее использовать здесь.Похоже, мне нужен вектор для хранения результатов, используя что-то вроде:

SharedVariable[params]

, а затем добавить вывод mle к params внутри вызова Monitor, но я не знаю синтаксис, чтобы сделать это.

1 Ответ

0 голосов
/ 30 марта 2012

Если вы просто хотите просмотреть результат, когда он будет готов, вы можете распечатать его перед возвратом.

mle[data_] := Module[{result},
    result = ArgMin[
          {-LogLikelihood[twoState[a, b, 60, 0.2], data],  
           Element[{a, b}, Reals] && a > 0 && b > 0}, 
          {a, b}];
    Print[result];
    Return[result];
];

Вы можете заменить вызов на Print, если хотите сделать что-то более сложное,как звонить Monitor.

...