問題タブ [multiprocess]
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.
android - 別のプロセスで実行されている 1 つの Android アプリケーションのアクティビティ。`android:multiprocess` は何をしますか?
大局
2 つの Android アプリケーションHost
とGuest
. Guest
でアクティビティをすぐに開くようなアクティビティを実行しようとしていHost
ます。Guest
アプリケーションの起動はで実行される必要がありますHost
が、 として実行されているように見えますGuest
(つまり、ユーザーは、ゲストの面倒な作業を行っているにもかかわらず、ホストの存在をすべての意図と目的で認識しないようにする必要があります)。
この質問は、そのHost
アクティビティを に属するプロセスで実行することに関するものHost
です。
(なぜこれをやりたいのかは、おそらくこの質問の範囲外ですが、間違いなくやりたいことです)。
私が以前に試したこと
まず、プロセスを残りのHost
活動から分離するだけで十分だと考えられていました。
これを行うため<activity>
に、マニフェストの要素でプロセスに名前が付けられました。
次の 2 つの理由から、これには問題があることが判明しました。
- それはうまくいきましたが、複数のゲストに直面すると、非常にハックで面倒になります。
- ユーザーがアプリを管理できるようにする標準の Android ツールが機能しません (たとえば、最近のアプリ リストからアプリをスワイプするなど)。
- プロセス名はコンパイル時に認識されている必要があります。
android:multiprocess
AndroidManifest.xml のドキュメントを見ると、役立つと思われるこのアクティビティ属性が見つかりました。
android:multiprocess
アクティビティのインスタンスを、それを開始したコンポーネントのプロセスに起動できるかどうか (できる
true
場合とできfalse
ない場合)。デフォルト値は ですfalse
。通常、アクティビティの新しいインスタンスは、それを定義したアプリケーションのプロセスで起動されるため、アクティビティのすべてのインスタンスが同じプロセスで実行されます。ただし、このフラグが に設定されている
true
場合、アクティビティのインスタンスは複数のプロセスで実行できるため、システムはインスタンスが使用される場所ならどこでもインスタンスを作成できます (パーミッションで許可されている場合)。
このドキュメントを読むと、これが私が探しているものである可能性があります。「アクティビティを開始できる」「アクティビティを開始したコンポーネントのプロセスに」というよりも、「アクティビティが開始された」と言った方がいいと思います。
残念ながら、そうではないようです。からの起動Host
アクティビティはGuest
、 によって測定されるように、常に異なるプロセスになりandroid.os.Process.myPid()
ます。
私がやろうとしていることを示すダミーアプリケーションのペアを用意しました:
- インストールし
Host
ます。 - インストールして実行する
Guest
- 起動されたアクティビティには、数字 (ゲストの pid) と 3 つのボタンがあります。最初の 2 つのいずれかをクリックすると、2 番目のアクティビティが起動します。2 番目のアクティビティには、最初のアクティビティと同じ番号が表示され
true
ます。これは、ホストとゲストが同じプロセスで実行されていることを示しています。
残念ながら、そうではないようです。
TL;DR
さまざまなアクティビティからアクティビティを取得して、呼び出し元のアプリケーションが所有する同じプロセスで実行するにはどうすればよいですか?
android:multiprocess
要素で実際に何をしactivity
ますか?
編集:私が望んでいるものを示す最小限の例があります。MainHostActivity
がと同じ数字になったら成功ですMainGuestActivity
。番号はandroid.os.Process.myPid()
です。
python - 親が終了した後も、実行時間の長い python 関数の実行を継続できるようにするにはどうすればよいですか?
httpリクエストハンドラーの一部として実行される、長時間実行されるpython関数があります(フォームで選択されたさまざまなオプションに関連付けられています)。
http 要求ハンドラーは、関数の実行が完了するのを待ってから、発信元に適切な応答を返します。
ただし、関数の実行には時間がかかる場合があるため、その間にリクエストが中断される可能性があります。これにより、リクエスト ハンドラが停止し、実行時間の長い関数の実行が中断されます。これは望ましくありません。関数が呼び出されるたびに実行が完了するようにしたいのです。
サブプロセスを使用して遊んだことがありますが、リクエスト ハンドラーが終了するとすぐに終了するようです。
別のスレッドまたはプロセスで関数を起動して、その親よりも長く存続できるようにすることはできますか?
デーモンはおそらく私の問題を部分的に解決しているようです-それらは親よりも長生きできますか? -しかし、親プロセスが子プロセスの結果を監視/アクセスできるようにしたいと思います。
あれは:
- 親プロセスは、子プロセスより先に終了する場合があります。この場合、子プロセスを完了させたい
- 親プロセスがまだ生きている限り、子プロセスにアクセスしたり、監視したりしたいと思います...親プロセスが死なない場合は、アクセスできるようにしたいと思います子供が行っていた処理の結果。
python - subprocess と multiprocess モジュールの結合
私は大量のデータを噛むための小さなパイプラインを作成しており、python を使用して複数のコアを使用してプログラムを呼び出すことにしました。
だからここに私の質問があります:
1) プログラムは非常に大きなテキスト ファイルを出力します。出力を新しいファイルに保存したいだけです (したがって、文字列を python オブジェクトとして保存しないでください)。 subprocess モジュールを使用してこれを行う最良の方法は何ですか?
2) マルチプロセスモジュールを使用して、プログラムを並行して何度も呼び出したい。通常は単純な方法で Pool.map 関数を使用しますが、これは subprocess モジュールに干渉しますか?
前もって感謝します!
python - マルチプロセッシングPythonのスレッドの複数のインスタンスを防ぐ
メールを定期的に送信するためのスレッドを実行したい。同じプログラムで、別のタスクを実行するプロセスを作成しています。タスクを作成すると、元のプロセスのスレッドがこれらのサブプロセスにコピーされ、1 通ではなく複数のメールを受け取ることになります。メイン プログラムで実行するスレッドが、作成されたサブ プロセスにコピーされないようにするにはどうすればよいですか?
c - サーバー、クライアントのデバッグ
C でマルチプロセス サーバーを作成していますが、プログラムをデバッグおよびテストするための最適なツールは何ですか? 具体的には、クライアントに送信されているものとその逆です。ご協力ありがとうございました。