問題タブ [python-asyncio]
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.
python - Python asyncio、先物、利回り
次のプログラムを考えてみましょう (CPython 3.4.0b1 で実行):
2 つの (関連する) 質問があります。
デコレータが on であっても
fast_sqrt
、Python は で作成された Future をfast_sqrt
完全に最適化するようで、プレーンfloat
が返されます。その後run_test()
、yield from
例外を発生させる値を取得するために評価
future.result()
する必要があるのはなぜですか? ドキュメントには、run_test
「未来が完了するまでコルーチンを一時停止し、その後、未来の結果を返すか、例外を発生させる」と書かれています。フューチャの結果を手動で取得する必要があるのはなぜですか?yield from <future>
ここに私が得るものがあります:
わかりました、「問題」を見つけました。yield from asyncio.sleep
inはslow_sqrt
自動的にコルーチンになります。待機は別の方法で行う必要があります。
4 つのバリアントはすべてここにあります。
python - asyncio.Protocol.data_received でコルーチンを呼び出す
asyncio.Protocol.data_received
新しい Python asyncioモジュールのコールバックで非同期処理を行う際に問題が発生しています。
次のサーバーを検討してください。
次のクライアントで使用:
self.fast_sqrt
呼び出されると、すべてが期待どおりに機能します。
ではself.slow_sqrt
、動作しません。
また、self.fast_sqrt
および の@asyncio.coroutine
デコレータでは機能しませんdata_received
。
ここで根本的な何かが欠けているように感じます。
完全なコードは次のとおりです。
テスト済み:
- Python 3.4.0b1 (Windows)
- Python 3.3.3 + asyncio-0.2.1 (FreeBSD)
問題は両方で同じです。 をslow_sqrt
使用すると、クライアント/サーバーは何もせずにハングします。
python - asyncio とマルチプロセッシングを組み合わせると、どのような問題が発生しますか?
Python でスレッド化を初めて見たときにほとんどの人が気付いているように、並列処理を実際に行いたい、または少なくともチャンスを与えたいと考えている人々にとって、人生を悲惨なものにする GIL があります。
現在、Reactor パターンのような実装を検討しています。事実上、あるスレッドのような着信ソケット接続をリッスンし、誰かが接続しようとすると、その接続を受け入れて、処理のために別のスレッドのようなものに渡します。
どのような種類の負荷がかかる可能性があるかは (まだ) わかりません。現在、受信メッセージに 2MB の上限が設定されていることは知っています。理論的には、1 秒あたり数千を取得できます (ただし、実際にそのようなものが見られたかどうかはわかりません)。メッセージの処理にかかる時間はさほど重要ではありませんが、明らかに速いほどよいでしょう。
multiprocessing
私は Reactor パターンを調べていて、 (少なくともテストでは) 問題なく動作するように見えるライブラリを使用して小さな例を開発しました。ただし、イベント ループを処理するasyncioライブラリが利用可能になる予定です。
と を組み合わせて私を噛むことができるものはありasyncio
ますmultiprocessing
か?
python - python3 asyncioでシリアルポートを使用する
私は試みていますが、これまでのところ、python asyncio を使用してシリアルポートにアクセスすることに失敗しています。
シンプルな fd で新しい python async フレームワークを使用するためのヒントをいただければ幸いです。
乾杯!
ジェームズ
python - asyncio backport trollius のインストール中に gcc エラーが発生する (Python 2.7.5 および Win7)
asyncio backport trollius のインストールに失敗しました。「...最初に _overlapped.pyd 拡張機能をビルドします (これは asyncio ディレクトリに配置されます):」
宣言されていない変数と型名。私はほとんどCを知りません。ここで何が欠けていましたか?