問題タブ [cpython]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python拡張モジュールの初期化-複数のファイル
多くのソースファイルとヘッダーファイルで構成されるCライブラリを作成したので、Pythonレイヤーでラップして、「インポート」できるようにする必要があります。
Pythonから呼び出される静的メソッドを実装しました。モジュールがインタープリターに公開するメソッドを指定する必要があります。
ただし、非静的メソッドはメソッドを登録するinitのみである必要があるため、ドキュメントでは、呼び出すことができるものを指定する際に単一のソースファイルを持つという非常に単純なケースのみを扱っているようです。
Cで静的に宣言されている場合、他のソースファイルのメソッドを呼び出すことは不可能であると私が知る限り(間違っている場合は修正してください)、Pythonモジュールごとに1つのCファイルしか持てません。全体で許可されている非静的メソッドは1つだけです。
これは本当に本当ですか?Pythonからコードにアクセスしたい場合は、コードを正しく構造化する必要がありますか?
編集:
だから、私がこれを最終的に機能させる方法は、Cythonを使用することでした。c / pythonインターフェース(以前はすべての参照カウントルールなどのために約1日かかっていました)を書き直すのに約1時間かかっただけでなく、すべてのビルドの問題を処理し、正確にどれを説明する明確なドキュメントがありますメソッドはPythonから利用できるようになります。
特に、私が使用したドキュメントの章は、ビルド手順、Cライブラリの呼び出し方法、言語の基本、および型、特にポインタのキャスト方法でした。
既存の複雑な構造のCコード(つまり、単一のファイル以外のもの)をPythonライブラリとしてラップしたい人には、Cythonを強くお勧めします。
java - Jythonを使ったJavaプログラムから、そのままpythonモジュールを利用することはできますか?
CPythonで正しく動作するのを妨げるような方法でPythonコードを変更することなく、Jythonを使用してJavaからPythonコードを使用できますか?
はいの場合、(Java コードで) どのような手順を実行する必要がありますか?
そうでない場合、これができない理由は何ですか (これまでのところ)?
python - リストと比較して、cPythonセットのパフォーマンスはどれですか?
私はcPythonリストのこれらのパフォーマンスノートを見つけました:
Pythonリストに必要な時間...。
- ...個々のアイテムを取得または設定します:O(1)
- ...リストに項目を追加します:最悪のO(n ^ 2)、ただし通常はO(1)
- ...アイテムを挿入します:O(n)、ここでnは挿入された要素の後の要素の数です
- ...アイテムを削除します:O(n)
ここで、cPythonセットの同じパフォーマンス特性を知りたいと思います。また、リスト/セットの反復がどれだけ速いかを知りたいです。私は特に大きなリスト/セットに興味があります。
google-app-engine - GoogleAppEngineにCpythonモジュールをインポートする
Pythonを使用してGoogleAppEngineでアプリケーションを開発しています。Pythonのeditdist機能を使用したいので、プログラムにeditdist C pythonモジュールをインポートしていますが、モジュールeditdistが存在しないことを示しています。
ローカルアプリケーション用にeditdistをインポートすると、正常に機能しますが、GoogleAppEngineアプリケーションでは機能しません。
このモジュールをインポートする方法を誰かに提案してもらえますか?
python - easy_install.exe が別のウィンドウで開かないようにするにはどうすればよいですか?
重複の可能性:
activepython : easy_install は端末として起動し、自動的に閉じます。これを回避する方法
Windows用のsetuptoolsをインストールしたばかりで、それを使用しようとしています:
これにより、新しいコマンド ウィンドウが起動し、Python と easy_install スクリプトが実行され、出力を確認する前にすばやくシャットダウンします。
回避策として、手動で実行できる easy_install-script.py を見つけました。しかし、私の質問は、easy_install が別のコマンド ウィンドウを生成しないようにするにはどうすればよいかということです。(今のままではダメです)
編集- dup questionで指摘されている解決策を試しましたが、うまくいきません。私はActivePythonを使用していませんが、Windows 64ビットではcpythonを使用しています。これは、この質問を開いたままにしておくのに十分な違いでしょうか?
python - スタックレス実行可能ファイルが非常に小さいのはなぜですか
Stackless Python でコンテスト用にいくつかのゲームを作成し、実行可能ファイルを作成する必要がありました。偶然にも、Stackless Python 2.5 を使用する代わりに CPython 2.6 を使用して実行可能ファイルをビルドしました。正しく再構築したところ、dist の最終的なサイズが 30 MB 強から約 8 MB に減少したことがわかりました。推測として、CPython には Twisted や Qt4 などのライブラリをインストールしましたが、Stackless にはインストールしていません。Py2exe パッケージは、使用されているかどうかに関係なく (おそらくコードを常に動的に呼び出すことができるため)、しかし、誰かが実際に知っているなら、私はその理由を知りたいと思います.
python - _PyString_Resize はメモリを再割り当てしますか?
私は Python C 拡張モジュール (CPython 2.5 用) に取り組んでいます。これは、バッファーを埋める基になるネットワーク API を呼び出します。
現在、コードは基本的に次のように書かれています。
私の知る限り、このコードは正常に動作しますが、_PyString_Resize
. sz が buffer_size より小さい場合、既存のバッファーを使用しますか? メモリを再割り当てしますか?
効率の観点からは、必要以上にメモリを消費したとしても、バッファ コンテンツの無駄なコピーを避けるために前者を好むでしょう。一方、メモリの再割り当てには、メモリのフットプリントを削減するという意味もあります。
では、_PyString_Resize が行うのはどれですか? そして、この種の振る舞いを制御する簡単な方法はありますか?
python - Twisted getPage(): 大量のページをリクエストするとプロセス メモリが増大する
約 500 個の URL の大規模なセット (Icecast/Shoutcast サーバーのステータス ページ) をクエリする情報を一定 (30 ~ 120 秒ごと) に取得するためのスクリプトを作成しています。正常に動作しますが、python プロセスの常駐サイズは常に増加しています。数時間実行したままにしておくと、最初の 30Mb から 1.2Gb の RES を要したので、無限に成長すると確信しています。
理解しやすいようにスクリプトを簡略化して、次のようにしました。
元のデーモンと同じように成長するため、問題を特定しました。なんとなく twisted.web.client.getPage() に関係していると思います。元のデーモンでは、実行時に meliae を使用したヒープ評価に twisted.manhole を使用しましたが、厄介なものは何も表示されません。
1 回または 2 回のクエリ サイクルが終了した直後に作成された最初の meliae ダンプ:
そしてその頃のトップ:
しばらく待ってからもう一度確認します。これは、20 分間実行した後の画像です (約 40 クエリ サイクル)。
そして上:
meliae によると、オブジェクト数も合計サイズも増加していません。しかし、プロセスはこの 20 分間で 200Mb の常駐メモリを消費します。
Pythonでもvalgrindを使用しましたが、リークは見つかりませんでした。何かご意見は?
Python バージョン 2.6.6、ツイスト バージョン 10.2.0 を使用しています
更新 #1: CPython のメモリ使用量をプロファイルするために valgrind massif も使用しました。割り当てられたメモリの 99.93% の割り当てツリーを次に示します。
python - 最小フットプリントの Python? CPython?
私はPythonが初めてです。いくつか検索した結果、PyPy は優れたパフォーマンスを発揮しますが、代償が伴うことがわかりました。メモリを使いすぎます。
私が Python に求めているのは、最小限のフットプリントでのパフォーマンスです。
CPythonはどうですか?
(CPython のベンチマークはshootout.alioth.debian.org
削除されました。CPython はフットプリントが小さいと言う人もいますが、どれくらい小さいのでしょうか?)
python - Python Tools for Visual Studio を使用したスタックレス Python 開発
CPython のサポートを含むPython Tools for Visual Studio Betaを使用すると、Stackless Python で開発できますか?
もしそうなら、既存の VS2010 インストールに PTVS をインストールする以外に、スタックレス Python 環境を設定するために必要な手順を含めるように回答を拡張していただけますか?