問題タブ [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 - asyncioを使用してpython3で並列ジョブを実行するにはどうすればよいですか?
私はそのようなクラスを持っていると仮定します:
Python 3.4.1でasyncioを使用して、このクラスの多くのインスタンスを並行して作成するにはどうすればよいですか?
python - Asyncio imap fetch メール python3
私は asyncio モジュールでテストしていますが、大きなメールを非同期で取得する方法のヒント/提案が必要です。
メール アカウントのユーザー名とパスワードのリストがあります。
私は考えました:
ただし、長い部分は、電子メールの添付ファイルをダウンロードすることです。
Eメール:
すべての (添付ファイルのダウンロード) メールを非同期で処理するにはどうすればよいですか?
python-3.x - map&reduce フレーバーを使用し、イベント ループをあふれさせない asyncio
私は実際のアプリケーションで asyncio を使用しようとしていますが、それほど簡単ではありません。asyncio の専門家の助けが必要です。
イベント ループをフラッディングせずに他のタスクを生成するタスク (成功!)
いくつかの「シード」Web ページから開始して Web をクロールするようなタスクを考えてみましょう。各 Web ページは、指数関数的 (!) 進行で新しいダウンロード タスクの生成につながります。ただし、イベント ループをあふれさせたり、ネットワークを過負荷にしたりしたくはありません。タスク フローを制御したいと考えています。これは、ここで提案された素敵なマキシムのソリューションを変更してうまく達成したものです: https://mail.python.org/pipermail/python-list/2014-July/687823.html
map & reduce (失敗)
まあ、しかし、すでにpython3を使用している場合は、map()とreduce()またはfunctools.reduce()のような非常に自然なものも必要です。つまり、ページからのリンクで完了したすべてのダウンロード タスクに対して「要約」関数を呼び出す必要があります。これは私が失敗するところです:(
ユースケースをモデル化するための非常に単純化されたテストを提案したいと思います。フィボナッチ関数の実装を非効率な形で使用してみましょう。つまり、reduce() で coro_sum() を適用し、map() で適用するものを coro_fib にします。このようなもの:
次のテストを実行できるようにします。
1 つのワーカーで #1 をテストします。
2 つのワーカーでのテスト #2:
各 coro_fib() と coro_sum() の両方の呼び出しが、暗黙的に生成されて管理されていないだけでなく、一部のワーカーのタスクを介して行われることが非常に重要です!
この非常に自然な目標に興味を持っている asyncio の達人を見つけるのは素晴らしいことです。あなたの助けとアイデアは大歓迎です。
よろしくお願いします
ヴァレリー
python - イベントループでコルーチンを通常の関数としてパッケージ化するにはどうすればよいですか?
ネットワークフレームワークにasyncioを使用しています。
以下のコード (low_level
は低レベル関数、main
block はプログラム エントリ、user_func
はユーザー定義関数):
(forなど)low_level
ではなく通常の関数をラップしたいのですが、イベントループになっています。通常の関数としてどのようにラップできますか?coroutine
compatibility
low_level
python - Python asyncioで最初に利用可能なロック/セマフォを取得する
Python 3.4 の新しい asyncio を使用して、ロック/セマフォのセットから利用可能な最初のロック/セマフォを取得するにはどうすればよいですか?
私が行ったアプローチは を使用し、取得できたら保留中の をwait(return_when=FIRST_COMPLETED)
すべてキャンセルするというものでした。acquire()
しかし、これが微妙なバグ/競合状態を引き起こす可能性があることを懸念しており、よりエレガントな方法があると感じています.
上記のコードは次のとおりです (メモリアドレスを編集):
python - Python AsyncIOのloop.add_reader()が期待するファイル記述子オブジェクトは何ですか?
Python 3.4 で新しい AsyncIO 機能を使用する方法を理解しようとしていますが、event_loop.add_reader()の使用方法に苦労しています。私が見つけた限られた議論から、開いているファイルの内容とは対照的に、別のプロセスから標準を読み取るためのように見えます。本当?もしそうなら、標準ファイル IO を統合するための AsyncIO 固有の方法がないように見えますが、これも本当ですか?
私は次のコードで遊んでいます。次の出力は、以下の行によってトリガーされるPermissionError: [Errno 1] Operation not permitted
/python3.4/selectors.py の 399 行目からの例外を示します。self._epoll.register(key.fd, epoll_events)
add_reader()
編集
私が興味を持っていたように、AsyncIO を使用して一度に複数のファイルを読み取る方法の例を探している人のために、それを実現する方法の例を次に示します。その秘密はラインにありyield from asyncio.sleep(0)
ます。これは基本的に現在の関数を一時停止し、イベント ループ キューに戻して、他のすべての準備完了関数が実行された後に呼び出されるようにします。関数は、スケジュールされた方法に基づいて準備ができていると判断されます。
cookies - Asyncio でセッション Cookie をサポート
Asyncio で使用する必要があるスクレイピング スクリプトを Python で作成しました。また、Web Cookie をサポートするためにも必要です。元々は urllib.request で作成されたもので、スクリプトは次のようになります。
これは今のところ問題なく動作しますが、Asyncio でマルチスレッド化する必要もあります。それに関するドキュメントが見つからなかったので、次のことを試しました。
コンテキストの問題として、私がスクレイピングしようとしているページは、読み込み時にセッション Cookie の存在をテストし、存在しない場合は作成し、それ自体にリダイレクトするような方法で作成されています。さて、単純なスクレイピング アプローチでは、私はループに陥っており、Asyncio/Aiohttp では何も起こりません。