Гарантируйте, что программа C, запускающаяся в то же время, что и программа Python, будет иметь такое же целочисленное значение времени - PullRequest
0 голосов
/ 05 января 2020

В настоящее время я пишу код, включающий данные о трубопроводе из программы C в программу Python. Это требует, чтобы они оба имели точно такое же значение time как целое число. Мой метод получения времени:

  • time(0) для C
  • int(time.time()) для Python

Однако я Непоследовательность в выводе приводит меня к мысли, что это не приводит к тому же значению. Для программы C требуется <0,001 с, в то время как: </p>

time ./cprog | python pythonprog.py

дает время, которое обычно выглядит следующим образом:

    real    0m0.043s
    user    0m0.052s
    sys     0m0.149s

Приблизительно один из каждых 5 запусков приводит к ожидаемому результату , Могу ли я сделать это более последовательным?

1 Ответ

1 голос
/ 06 января 2020

Не решение, а объяснение.

При запуске python (или другого интерпретируемого / языка VM) обычно запускаются затраты, связанные с чтением и анализом многих необходимых модулей. Даже небольшая Python программа, такая как print 5, будет выполнять большое количество операций ввода-вывода.

Стоимость запуска задержит начальный поиск на текущее время.

Начиная с выхода strace, вызов кода python приведет к> 200 открытым вызовам, ~ (f) stat,> 20 вызовов mmap и др. c.

strace -c python prog.py
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 31.34    0.000293           1       244       178 openat
  9.84    0.000092           1       100           fstat
  9.20    0.000086           1        90        60 stat
  8.98    0.000084           1        68           rt_sigaction
  7.81    0.000073           1        66           close
  2.14    0.000020           2         9           brk
  1.82    0.000017           9         2           munmap
  1.39    0.000013           1        26           mmap
  1.18    0.000011           2         5           lstat
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...