Конвертировать значения данных из Python в C - PullRequest
0 голосов
/ 29 июня 2018

Для этого проекта я работаю с libsvm.

У меня есть файл Python, который может выводить список векторов объектов, и у меня есть исполняемый файл C, который принимает 2 файла CSV, список векторов объектов и модель SVM в качестве аргументов и выводит прогноз в виде CSV-файл.

Теперь я хотел бы изменить файл C таким образом, чтобы он использовал вывод списка из файла python в качестве своих входных аргументов для создания прогноза. Это потому, что мне нужно запустить код Python и C в режиме реального времени. Поэтому задержка будет проблемой, если мне придется записать в CSV-файл с Python и прочитать файл в C.

Я пробовал искать такие вещи, как cython, модуль подпроцесса и argparse. Однако, похоже, что они используются для выполнения функций Python на C и C на Python. Может кто-нибудь, пожалуйста, помогите понять, как перенести данные с Python на C? Спасибо.

1 Ответ

0 голосов
/ 29 июня 2018

Это будет зависеть от величины задержки, которую вы принимаете в качестве входных данных. Я не знаком с libsvm, поэтому я признаю, что вы можете прочитать свой вектор признаков в моих решениях:

Первое решение (проще, но медленнее) - сделать небольшую библиотеку Python to C следующим образом:

#/usr/bin/python
def print_vector(vec):
  first =  true;
  print("[")
  for i in vec: 
    if first: 
      first = false
    else:
      print(',')
    print(i)
  print("]")

и проанализировать его из стандартного ввода в C с библиотекой <string.h> и использованием atoi.

Затем вы выполните свою команду следующим образом:

./my_python_program | ./my_c_program

Второе решение (намного быстрее, но намного сложнее), заключающееся в том, чтобы реализовать конвейерное соединение между вашей программой на Python и C. Или даже соединениями через сокеты TCP.

Например, вы можете просмотреть Документацию по Linux , если вы работаете под Linux.

...