curlでコールバックの進行状況を使用すると、ファイルのダウンロードが遅くなるのはなぜですか?

到着

私はこの単純なPythonスクリプトを持っており、curlを使用してファイルをダウンロードします。また、帯域幅を計算します。スクリプト全体は次のとおりです。

import pycurl
import time

next_time = 0

# Callback function invoked when download/upload has progress
def progress(download_t, download_d, upload_t, upload_d):
    global next_time
    if time.time() >= next_time:
        print("Total to download", download_t)
        print("Total downloaded", download_d)
        print("Total to upload", upload_t)
        print("Total uploaded", upload_d)
        download_speed = (download_d / 1000000 * 8) / 10
        print(" download_speed", download_speed)
        next_time = time.time() + 10


c = pycurl.Curl()
c.setopt(c.URL, "https://mysample_domain.com/speed-test/test/1G.dat")
c.setopt(c.NOPROGRESS, False)
c.setopt(c.XFERINFOFUNCTION, progress)
start_time = time.time()
next_time = time.time() + 10
c.perform()
print('after download, duration = ', time.time() - start_time)

問題は、コールバックの進行状況を使用すると、459秒でファイルがダウンロードされることです。この2行を削除すると、ファイルは210秒でダウンロードされました。メソッドの進行状況での計算がダウンロード速度をフリーズするのはなぜですか?

c.setopt(c.NOPROGRESS, False)
c.setopt(c.XFERINFOFUNCTION, progress)
ルカス

私はあなたのコードのプロファイルを作成し、progress関数が大幅な速度低下を引き起こしていないという結論に達しました。実際、コードは進行状況関数に合計実行時間の0.2%しか費やしていません(20秒のダウンロード中に約40k回の呼び出しがあります)。

また、ダウンロードを複数回実行したところ、ダウンロードが進行しない場合や、進行する場合のダウンロードに通常よりも大幅に時間がかかる場合がありました(約2〜3倍の長さ)。これは、ネットワークの問題/ボトルネック、またはpycurlの問題が原因である可能性がありますが、進行状況機能が原因ではありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

2つのprogressBarコントロールを使用して、各ファイルのダウンロードの進行状況と、すべてのファイルのダウンロードの全体的な進行状況を表示するにはどうすればよいですか?

分類Dev

小さなファイルのダウンロード中に Javascript で進行状況バーを表示するにはどうすればよいですか?

分類Dev

boto3とコールバックを使用してS3ファイルのダウンロードの進行状況を追跡する

分類Dev

多くのファイルをダウンロードするときにNSURLSessionがcURLより遅いのはなぜですか?

分類Dev

ボタンをクリックして Web クライアントのダウンロードの進行状況をキャンセルすると、例外が発生するのはなぜですか?

分類Dev

Blazorサーバー側を使用して、大きなファイルでコントローラーからクライアントへのファイルの進行状況のアップロードステータスを取得することは可能ですか?

分類Dev

外付けドライブにコピーするときに進行状況ウィンドウが正しくないのはなぜですか

分類Dev

ファイルのダウンロードを進行状況ビューにリンクするにはどうすればよいですか

分類Dev

Spring Bootを使用してバックエンドでファイルのダウンロードの進行状況を追跡するにはどうすればよいですか?

分類Dev

進行状況の通知とともにバックグラウンドでFirebaseStorageにファイルを継続的にアップロードする

分類Dev

NSURLSessionDataTaskでファイルのダウンロードの進行状況を表示する

分類Dev

Angularでファイルをダウンロードするときに進行状況とファイルを取得する際の問題

分類Dev

ファイルのダウンロードの進行状況をすばやく見つける

分類Dev

copyInputStreamToFileを使用したコンソールでのJavaApacheIOファイルのダウンロードの進行状況

分類Dev

マルチパートなしでファイルアップロードの進行状況を取得するにはどうすればよいですか?

分類Dev

マルチパートなしでファイルアップロードの進行状況を取得するにはどうすればよいですか?

分類Dev

同じファイルと宛先に対する後続のコピー操作が遅くなるのはなぜですか (ウィンドウ)

分類Dev

HTTPSを介してPOCOStreamCopierからファイルのダウンロードの進行状況を取得する

分類Dev

React-Native:ファイルのダウンロード中に進行状況を表示するにはどうすればよいですか?

分類Dev

QT C ++は進行状況の合計で複数のファイルをダウンロードします

分類Dev

QT C ++は進行状況の合計で複数のファイルをダウンロードします

分類Dev

AJAX でファイルをダウンロードすると、PHP Web サーバー全体がフリーズするのはなぜですか?

分類Dev

LaravelでPDFファイルをダウンロードしようとすると、奇妙な文字でファイルを開くのはなぜですか?

分類Dev

Androidでリアクティブ拡張機能を使用して進行状況の更新を含むファイルをダウンロードする方法

分類Dev

Essenceフレームワークでファイルのアップロードの進行状況を表示する

分類Dev

SSH.NETを使用してProgressBarにファイルダウンロードの進行状況を表示する

分類Dev

進行状況ダイアログではなくアクティビティの進行状況を表示して、Webビューでファイルをダウンロードしたい

分類Dev

webviewからファイルをダウンロードすると、実際のファイルではなくHTMLコンテンツが返されます

分類Dev

fileuploadコントロールを使用しているときに、コードがWebサーバー上の指定されたフォルダーにファイルをアップロードしないのはなぜですか?

Related 関連記事

  1. 1

    2つのprogressBarコントロールを使用して、各ファイルのダウンロードの進行状況と、すべてのファイルのダウンロードの全体的な進行状況を表示するにはどうすればよいですか?

  2. 2

    小さなファイルのダウンロード中に Javascript で進行状況バーを表示するにはどうすればよいですか?

  3. 3

    boto3とコールバックを使用してS3ファイルのダウンロードの進行状況を追跡する

  4. 4

    多くのファイルをダウンロードするときにNSURLSessionがcURLより遅いのはなぜですか?

  5. 5

    ボタンをクリックして Web クライアントのダウンロードの進行状況をキャンセルすると、例外が発生するのはなぜですか?

  6. 6

    Blazorサーバー側を使用して、大きなファイルでコントローラーからクライアントへのファイルの進行状況のアップロードステータスを取得することは可能ですか?

  7. 7

    外付けドライブにコピーするときに進行状況ウィンドウが正しくないのはなぜですか

  8. 8

    ファイルのダウンロードを進行状況ビューにリンクするにはどうすればよいですか

  9. 9

    Spring Bootを使用してバックエンドでファイルのダウンロードの進行状況を追跡するにはどうすればよいですか?

  10. 10

    進行状況の通知とともにバックグラウンドでFirebaseStorageにファイルを継続的にアップロードする

  11. 11

    NSURLSessionDataTaskでファイルのダウンロードの進行状況を表示する

  12. 12

    Angularでファイルをダウンロードするときに進行状況とファイルを取得する際の問題

  13. 13

    ファイルのダウンロードの進行状況をすばやく見つける

  14. 14

    copyInputStreamToFileを使用したコンソールでのJavaApacheIOファイルのダウンロードの進行状況

  15. 15

    マルチパートなしでファイルアップロードの進行状況を取得するにはどうすればよいですか?

  16. 16

    マルチパートなしでファイルアップロードの進行状況を取得するにはどうすればよいですか?

  17. 17

    同じファイルと宛先に対する後続のコピー操作が遅くなるのはなぜですか (ウィンドウ)

  18. 18

    HTTPSを介してPOCOStreamCopierからファイルのダウンロードの進行状況を取得する

  19. 19

    React-Native:ファイルのダウンロード中に進行状況を表示するにはどうすればよいですか?

  20. 20

    QT C ++は進行状況の合計で複数のファイルをダウンロードします

  21. 21

    QT C ++は進行状況の合計で複数のファイルをダウンロードします

  22. 22

    AJAX でファイルをダウンロードすると、PHP Web サーバー全体がフリーズするのはなぜですか?

  23. 23

    LaravelでPDFファイルをダウンロードしようとすると、奇妙な文字でファイルを開くのはなぜですか?

  24. 24

    Androidでリアクティブ拡張機能を使用して進行状況の更新を含むファイルをダウンロードする方法

  25. 25

    Essenceフレームワークでファイルのアップロードの進行状況を表示する

  26. 26

    SSH.NETを使用してProgressBarにファイルダウンロードの進行状況を表示する

  27. 27

    進行状況ダイアログではなくアクティビティの進行状況を表示して、Webビューでファイルをダウンロードしたい

  28. 28

    webviewからファイルをダウンロードすると、実際のファイルではなくHTMLコンテンツが返されます

  29. 29

    fileuploadコントロールを使用しているときに、コードがWebサーバー上の指定されたフォルダーにファイルをアップロードしないのはなぜですか?

ホットタグ

アーカイブ