programing

Python에서 C코드를 사용할 수 있나요?

prostudy 2022. 6. 4. 08:09
반응형

Python에서 C코드를 사용할 수 있나요?

Python이 API를 제공하므로 Python interpreter를 C코드로 호출할 수 있지만, 제가 원하는 것은 그 반대입니다.

내 프로그램은 C API를 사용해야 하므로 코드는 C로 작성되어야 합니다.하지만 Python으로 프로그램을 패키징하고 싶습니다.즉, Python에서 C 함수 또는 실행 파일을 호출합니다.가능할까요?

C 코드를 라이브러리로 하고 싶은 경우, 즉 C 코드는#include및 링크*.oPython에서는 어떻게 할 수 있을까요?가능할까요?C코드를 실행파일에 쓰면 명령어가 되는데 Python에서 직접 호출할 수 있나요?

또한 Python 코드를 컴파일 할 수 있다고 들었습니다만, 소스 파일 없이도 코드를 실행할 수 있는 것입니까?출력 파일이 바이너리 파일입니까?퍼포먼스가 향상됩니까?

그 C 함수나 실행 파일을 python으로 호출하고 싶습니다.그게 가능합니까?

네, Python에 Import할 수 있는 C 코드를 모듈로 작성할 수 있습니다.Python은 이러한 확장 모듈을 호출합니다.Python에서 직접 호출할 수 있습니다. 예를 들어 설명서에서 다음과 같습니다.

Python 코드

import example
result = example.do_something()

C코드

static PyObject * example(PyObject *self)
{
    // do something
    return Py_BuildValue("i", result);
}

C 코드를 라이브러리로 하고 싶은 경우, 즉 python의 *.o의 #include 및 link와 함께 사용하는 경우 방법 또는 가능한 경우.

공유 라이브러리 *.dll 또는 *.로 빌드할 수 있습니다.따라서 모듈을 배포하기 위해 왜곡을 사용할 수도 있습니다.

C 코드를 실행 파일에 쓰면 명령어가 됩니다만, 직접 python으로 호출할 수 있습니까?

*.exe를 쓰는 경우 그 반대입니다(C에서 Python을 호출합니다).선택하는 방법(exe vs 공유 라이브러리)은 "Python이 있는 C 프로그램" 또는 "C가 있는 Python 프로그램이 있는 Python 프로그램" 중 어느 쪽을 원하는지에 따라 달라집니다.

또한 python code를 컴파일 할 수 있다고 들었습니다만, 소스 파일 없이도 코드를 실행할 수 있는 것입니까?출력 파일이 바이너리 파일입니까?퍼포먼스가 향상됩니까?

Python은 실행 시 *.py 파일을 읽고 *.pyc 바이트 코드 파일로 컴파일합니다.그런 다음 바이트 코드가 Python 가상 머신에서 실행됩니다.즉, "소스에서 바이트 코드로의 재컴파일을 피할 수 있기 때문에 동일한 파일을 두 번째로 실행하는 것이 더 빠릅니다." (Python 용어집에서) 따라서 *.py 파일을 편집하지 않으면 *.pyc가 실행됩니다.*.py 파일 없이 *.pyc 파일을 배포할 수 있지만 암호화되지 않고 역설계할 수 있습니다.

Python을 확장할 필요는 없지만(소요하지 않은 btw), ctypes 등의 외부 함수 인터페이스를 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/18762621/can-we-use-c-code-in-python

반응형