私は大規模なpythonプロジェクトのいくつかのビットを高速化するためにCをピックアップしています。継続的に動作するPythonスクリプトに新しい機能を追加するために、時々.pyファイルをチェックし、その内容を統合します。 Cで同等のことをする方法があるのかどうか疑問に思っていました。ダイナミックライブラリの内容をオンザフライでピックアップする方法はありますか?Cでは、動的ライブラリを再コンパイルすることで、実行中のプロセスに新しいコードを統合することは可能ですか?
答えて
はい、コンパイル時にリンクするのではなく、を使用してライブラリにアクセスし、dlsym
の機能にアクセスする必要があります。新しいライブラリに切り替えるには、ハンドルをdlclose
にして新しいハンドルを作成する必要があります。これをモジュールにラップして、すべてを処理しても大したことはありません。
実行中のプロセスで 'dlclose'を使うのは難しいかもしれません。古いライブラリへの参照がないことを確認する必要があります(たとえば、静的変数へのポインタ)。 – ugoren
あなたが好きなライブラリをリンクすることはできますが、シンボル名がその関数のいずれかへの参照を取得している限り、必要に応じて**関数の署名を事前に**必要とすることに言及する価値がありますそれを正常に呼び出す。 – alk
実際には真実ではありません。理論的には、モジュールの残りの部分の署名と、ローダーモジュールが解析して使用する適合データを提供する単一の定義済み関数シグネチャを持つことができます。それは大きくて扱いにくいでしょうが、あなたはそれを行うことができます。 –
あなたは窓でそれを行うことができますLoadLibrary/FreeLibaray私はそれに相当するUNIXがあると確信しています。
- 1. 実行時にObjective-Cライブラリを更新することは可能ですか?
- 2. 実行中にプログラムを逆コンパイルすることは可能ですか?
- 3. Microsoft.Extensions.ConfigurationライブラリをASP.NET 5と統合することは可能ですか?
- 4. Objective-Cでプロトコルを動的に実装することは可能ですか?
- 5. ケーキパターンとマクロを統合することは可能ですか?
- 6. PythonとJavaを統合することは可能ですか?
- 7. Kdb +とhadoopを統合することは可能ですか?
- 8. angular2とAEMを統合することは可能ですか?
- 9. JqueryをEclipseに統合することは可能ですか?
- 10. ジャスミンをクルーズコントロールネットに統合することは可能ですか
- 11. DatatablesをYiiに統合することは可能ですか?
- 12. コード実行ステップをカウントすることは可能ですか?
- 13. GPUで純粋なC++コードを実行することは可能ですか
- 14. C++クラスのテンプレートインスタンスをコンパイルすることは可能ですか?
- 15. Spring統合:ServiceActivatorメソッドでトランザクションを実装することは可能ですか?
- 16. 差動リンクを実行することは可能ですか?
- 17. Cがjsコードを実行することは可能ですか?
- 18. コードをアトミック(C#)にすることは可能ですか?
- 19. それはフルスクリーンを実行している実行中のプロセス/アプリをキャプチャし、セカンダリモニタに移動することが可能です場合、セカンダリモニタに
- 20. C#.NET DLLファイルが存在する場合にのみコードを実行することは可能ですか?
- 21. これらの行をJavaでコンパイルすることは可能ですか?
- 22. プロセスの実行時間を確認することは可能ですか
- 23. JAVAプロジェクトを外部ライブラリとコンパイルすることは可能ですか?
- 24. WindowsイベントとWindowsタイマーイベントを再実行することは可能ですか?
- 25. Android:Contentviewを動的にすることは可能ですか?
- 26. C++コードを象徴することは可能ですか?
- 27. アンドロイドエミュレータでviberを実行することは可能ですか?
- 28. d3でマルチズームを実行することは可能ですか
- 29. JavaScriptをリアルタイムで実行することは可能ですか?
- 30. Androidでバッチファイルを実行することは可能ですか?
http://cython.org/またはhttp://pypy.org/を使用して、注意が必要なコードのスピードアップを検討しましたか? – ChrisProsser
@ChrisProsser。私はpypyを考えましたが、これはCを学ぶ良い言い訳でした。私はC言語でハンドルを取得すると実際にcythonと一緒に行くかもしれません。 –