C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++でPythonオブジェクトを使用する方法は?


これは、単純なPythonオブジェクトがラップされて埋め込まれている例です。これには.cを使用していますが、c++にも同様の手順があります-

class PyClass(object):
    def __init__(self):
        self.data = []
    def add(self, val):
        self.data.append(val)
    def __str__(self):
        return "Data: " + str(self.data)
cdef public object createPyClass():
    return PyClass()
cdef public void addData(object p, int val):
    p.add(val)
cdef public char* printCls(object p):
    return bytes(str(p), encoding = 'utf-8')

cython pycls.pyx(c ++の場合は--cplusを使用)を使用してコンパイルし、ソース宣言と関数宣言をそれぞれ含む.cファイルと.hファイルを生成します。これで、Pythonを起動するmain.cファイルを作成し、これらの関数を呼び出す準備ができました-

#include "Python.h"   // Python.h always gets included first.
#include "pycls.h"    // Include your header file.
int main(int argc, char *argv[]){
    Py_Initialize();   // initialize Python
    PyInit_pycls();    // initialize module (initpycls(); in Py2)
    PyObject *obj = createPyClass();
    for(int i=0; i<10; i++){
        addData(obj, i);
    }
    printf("%s\n", printCls(obj));
    Py_Finalize();
    return 0;
}
これを適切なフラグ(python-config [Py2]のpython3.5-configから取得できます)でコンパイルします)-

gcc pycls.c main.c -L$(python3.5-config --cflags) -I$(python3.5-config --ldflags) -std=c99
オブジェクトと相互作用する実行可能ファイルを作成します-

./a.out
Data: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

これはすべて、.hヘッダーファイルを生成するpublicキーワードとともにCythonを使用して行われました。あるいは、Cythonを使用してPythonモジュールをコンパイルし、ヘッダーを作成するか、追加のボイラープレートを自分で処理することもできます。


  1. Tkinter Pythonでスレッドを使用する方法は?

    Tkinterでは、スレッド化を使用して一度に複数の関数を呼び出すことができます 。アプリケーション内の一部の機能の非同期実行を提供します。 Pythonでスレッドを使用するために、スレッドというモジュールをインポートできます。 スレッドをサブクラス化します クラス。新しいクラス内で、実行を上書きする必要があります メソッドを実行し、そこでロジックを実行します。 したがって、基本的にスレッドを使用すると、一度に複数の作業を行うことができます。アプリケーションでスレッド化を実現するために、Tkinterは Thread()を提供します 機能。 例を挙げて、しばらくスリープしてから別の関数を

  2. MacでPythonを使用する方法

    コーディングを学ぶことは現在非常に人気があり、Pythonは学ぶのに最適なコーディング言語です。幸いなことに、Macは優れたコーディングプラットフォームであり、Pythonを使用するとMacでのコーディング方法を簡単に学ぶことができます。 この機能では、macOSでPythonをセットアップしてから、このプラットフォームでのコーディングを学習します。学習曲線は非常に扱いやすいです。 PythonはすでにMacにインストールされている場合もあります。 (そうでない場合でも、心配しないでください。インストールについても説明します。) ここではPythonに焦点を当てていますが、Macコーディン