2016-05-12 10 views
-1

私は、より速い方法でタスクを達成する必要のある特定のクエリを持っています。Pythonの反復タスクをより速く自動化する

Pythonでping 10000デバイスにプログラムを書き込むとします。 私が各デバイスを順番に調べてみると(計算のために)、1台のデバイスがpingに約1分かかってしまいます。

スクリプトを実行すると、スクリプトを開始してからスクリプトを終了するまでに10000分かかることがあります。

私は上記より少ない分で同じことを達成できる方法はありますか?もしそうなら、私はこれを行う方法や専門家の開発者からのヒントをどこでどのように読むことができます。

私はPythonプログラミングに新しいですし、どんな助けもありがとうございます。

+0

順番にpingを実行しないでください。フォークなどを使用してください。 –

答えて

1

〜10,000スケールでは、スレッド/プロセスに対して何らかの非同期ソリューションを探し始める必要があります。

非同期ソリューションを使用すると、このスケールでパフォーマンスが向上します。あなたのPCは10,000スレッド/プロセス(すなわち、十分なリソースがない)を処理できないかもしれませんが、coroutes/greeletsを使用するとうまく動作します。

Python 3.4/3.5を実行できる場合は、aiohttpをチェックアウトしてください。

2.7の場合は、grequestを試してみてください。

これらのソリューションの両方を使用すると、リモートサーバーが応答するのを待つことなく、ピングを繰り返して送信できます。すべてのサーバーを突き刺したら、再度反復処理して応答を処理できます。

1

マルチスレッドを使用できます。そのためには、threadingモジュールを使用できます。この仕事のためには最高のものではないかもしれませんが、Pythonではデフォルトでかなり良いです。基本的な考え方は、各ping用のスレッドを作成することです。各スレッドは、次のタスクに進む間に実行されます。そこには多くの偉大なチュートリアルがありますので、私はあなたが私が与えた情報から始めることができることを願っています。

関連する問題