マルチスレッドのC++アプリケーションにPythonを組み込みましたが、 Py_Initialize()
を複数のスレッドで呼び出すのは安全ですか?それともメインスレッドで呼びますか?マルチスレッドでPy_Initialize()を呼び出す
答えて
Py_Initialize()
コードが含まれています
if (initialized)
return;
initialized = 1;
関数の説明文も書かれています:
を第二のために呼ばれたときにこれは何もしませんtime(Py_Finalize()を最初に呼び出すことなく)。
あなたが行っていることにもよるが、複雑になることがありますが、メインスレッドからのみ行うことをお勧めします。
シグナルハンドラは、メインのPythonスレッドのコンテキストでのみ起動されるという問題があります。つまり、Py_Initialize()
に電話をかけたスレッドが何であれ。したがって、一時的なスレッドで、一度しか使用されずに破棄された場合、シグナルハンドラを呼び出す機会はありません。だから、信号をどのように扱うかについていくつか考えなければなりません。
ネイティブスレッドAPIを使用してCコードで作成された一時的なスレッドを大量に使用し、Pythonインタープリタを呼び出す際にはそれぞれPythonインタプリタでデータを作成するので注意してください。これらの外部スレッドの作成と破棄を続けると、それが蓄積されます。外部スレッドからの呼び出しの場合はスレッドプールを使用し、以前のスレッドの再利用を続けるように努力する必要があります。
'Py_Initialize()'が複数のスレッドで呼び出された場合、別のスレッドが '1 'に書き込んでいる間にあるスレッドがこの変数を読み込み中であれば、スレッドの安全性をどのように保証しますか? – Allanqunzi
はい、おそらく別の問題です。その場合、 '' Py_Initialize() ''の呼び出しの回りにmutexロックを使う必要があります。 –
- 1. マルチスレッドとデリゲートの呼び出し
- 2. vb.netデリゲートと呼び出し - マルチスレッド
- 3. C#で同じメソッドを呼び出すマルチスレッドを扱うには?
- 4. マルチスレッドで入力引数を持つ関数を呼び出す
- 5. マルチスレッド/呼び出しに関する問題:(
- 6. Py_initialize/Py_Finalizeは、第二次のコードの呼び出し、私のアプリのセグメンテーション違反でnumpyの
- 7. 目的関数scipy.optimize.leastsqへのマルチスレッド呼び出し
- 8. 呼び出しログ機能の最適化 - マルチスレッド
- 9. マルチスレッド時間ベースの呼び出し階層
- 10. Javaでのマルチスレッドのrunメソッドを使用したメソッドの呼び出し
- 11. 別の関数呼び出しで関数を呼び出す
- 12. 引数でデバウンス関数呼び出しを呼び出す
- 13. 1回の呼び出しでメソッドを呼び出す
- 14. SparkでUDFの呼び出しを呼び出す
- 15. 各メソッド呼び出しでjQueryがコンストラクタを呼び出す
- 16. jQueryで.NET WSDL呼び出しを呼び出す方法Javascript?
- 17. jQuery ajaxで関数asmxの呼び出しを呼び出す
- 18. Xamarin:通知呼び出しでIValueConverterを呼び出す方法
- 19. URLでJavascriptの関数呼び出しを呼び出す
- 20. defrecordコンストラクタで呼び出しを呼び出しますか?
- 21. effective_javaからの呼び出しをインラインで呼び出す
- 22. pjaxを呼び出すときに$(document).ready()で呼び出されたjqueryを呼び出す方法は?
- 23. デザインパターントラッキングメソッド呼び出し/呼び出し側
- 24. Webサービスを呼び出す例外を呼び出す
- 25. UITextViewを呼び出す方法addTargetメソッドを呼び出す
- 26. フラグメントonInfoWindowを呼び出すメソッドを呼び出す
- 27. データベース接続を呼び出すクラスを呼び出す
- 28. APIKitルータを呼び出す前にHTTPエンドポイントを呼び出す
- 29. 呼び出すクラスのプロパティを呼び出す方法
- 30. SetEventを呼び出した後にCloseHandleを呼び出す
[静的変数を変更することはスレッドセーフですか?](http://stackoverflow.com/questions/43837721/is-it-thread-safe-to-modify-static-variable) –
あなたはすでにこの質問をしています。異なる焦点にもかかわらず。私の回答を複製に記載してください。 –