Приложение запускается несколько раз в зависимости от размера ввода - PullRequest
0 голосов
/ 29 марта 2012

У меня есть 2 сценария Python https://gist.github.com/2233477.

  • rsgen.py генерирует "случайные" входы для использования в simulate.py
  • simulate.py выполняет фактическое моделирование

Дело в том, что когда я начинаю увеличивать размер ввода с rsgen.py с параметром --numReferences, я получаю различные выходные данные

# ./rsgen.py --numReferences 1000 > rs.txt; cat rs.txt | xargs ./simulate.py
Number of page faults : 59

# ./rsgen.py --numReferences 100000 > rs.txt; cat rs.txt | xargs ./simulate.py
Number of page faults : 873
Number of page faults : 848
Number of page faults : 823
Number of page faults : 103

./rsgen.py --numReferences 1000000 > rs.txt; cat rs.txt | xargs ./simulate.py
Number of page faults : 866
Number of page faults : 869
Number of page faults : 876
Number of page faults : 907
Number of page faults : 910
Number of page faults : 1001
Number of page faults : 845
...

Обратите внимание, что по мере увеличения numReferences симуляция сценария python запускается больше раз. Это почему? Я ожидаю только 1 строку "Количество ошибок страницы: ..."

1 Ответ

2 голосов
/ 29 марта 2012

Вероятно, это как-то связано с xargs 'ARG_MAX, который определяет размер пакета для количества аргументов, отправляемых в исполняемый файл;следовательно, зачем несколько вызовов вашего скрипта, поскольку он разделяет аргументы между несколькими вызовами.

Попробуйте -n (или --max-args) флаг xargs.

Лучший способв целом было бы simulate.py принять аргумент файла, чтобы вы могли сделать что-то вроде этого:

./rsgen.py --numReferences N > rs.txt; 
./simulate.py -f rs.txt

Вероятно, это было бы намного быстрее, так как избегает xargs накладных расходов

...