ツイストと一緒に2つの整数を追加するにはどうすればよいですか?
-
26-10-2019 - |
質問
プログラムには2つの整数があります。それらを呼びましょう」a
" と "b
"。それらを一緒に追加して、結果として別の整数を取得したいと思います。これらは通常のPythonです int
オブジェクト。不思議なんだけど;ツイストで一緒に追加するにはどうすればよいですか?特別なものはありますか performAsynchronousAddition
どこかで機能しますか?必要ですか Deferred
?原子炉はどうですか?原子炉は関与していますか?
解決
わかりました、はっきりしてください。
Twistedは何もしません CPUバウンドタスク そして、正当な理由があります。サブタスクを並べ替えることで、コンピューティングバインドジョブを迅速に行う方法はありません。できることは、コンピューティングリソースを追加することです。そして、それでさえ、その実装の繊細さのためにPythonでうまくいきませんでした。
Twistedは、プログラムが際に特別なセマンティクスとイベントループ処理を提供します」立ち往生「そのコントロールの場合、外で何かを待っています。最も通常は別のマシンで実行されているプロセスで、ネットワーク接続を介してねじれたプロセスと通信します。 待っている とにかく、Twistedは、その間にもっと多くのことを成し遂げるメカニズムを提供します。つまり、Twistedは同時性を提供します I/Oバウンドタスク
TL; DR:Twistedはネットワークコード用です。他のすべては通常のPythonです。
他のヒント
これはどう:
c = a + b
それは機能するはずであり、非同期に行う必要はありません(かなり速いです)。
良い質問とねじれ(またはPython)には、少なくともいくつかのコアに「A + B」を生成する方法が必要です(私の8コアi7)。
残念ながら、Pythonギルはこれを防ぎます。つまり、CPUバウンドタスクだけでなく、1つのコアが仕事をしている間、他の7つのコアが何もしていません。
注:より良い例は、「a() + b()」、または「fact(sqrt(a()** b())」などです。しかし、重要な事実は、上記の操作が1つのコアをロックし、ギルは、その操作中にPythonを他のことをすることをほとんど防ぎます。