質問

プログラムには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を他のことをすることをほとんど防ぎます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top