Pythonコードカバレッジとマルチプロセッシング

SmCaterpillar

私はcoverallscoverage.py組み合わせて使用して、テストスクリプトのPythonコードカバレッジを追跡しています。次のコマンドを使用します。

coverage run --parallel-mode --source=mysource --omit=*/stuff/idont/need.py ./mysource/tests/run_all_tests.py
coverage combine
coveralls --verbose

これは、マルチプロセッシングを除いて非常にうまく機能します。ワーカープールまたは子プロセスによって実行されたコードは追跡されません。

マルチプロセッシングコードも追跡する可能性はありますか?私が見逃している特定のオプションはありますか?マルチプロセッシングライブラリにラッパーを追加して、新しいプロセスが生成されるたびにカバレッジを開始するのではないでしょうか。

編集

私(そしてjonrsharpeも:-)はマルチプロセッシング用のモンキーパッチを見つけました

ただし、これは私には機能しません。私のTracis-CIビルドは、開始直後に強制終了されます。ローカルマシンで問題を確認し、マルチプロセッシングにパッチを追加するとメモリが破壊されたようです。1GBよりはるかに少ないメモリを使用するテストでは、この修正で16GB以上が必要になります。

EDIT2

モンキーパッチは、小さな変更を加えた後でも機能します。config_file解析(config_file=os.environ['COVERAGE_PROCESS_START'])を削除するとうまくいきました。これにより、メモリの肥大化の問題が解決されました。したがって、対応する行は単純に次のようになります。

cov = coverage(data_suffix=True)
デビッドケッチェソン

Coverage 4.0には、--concurrency=multiprocessingこれに対処するためのコマンドラインオプション含まれていますcoverage combine後で使用する必要がありますたとえば、テストがにあるregression_tests.py場合は、コマンドラインでこれを行うだけです。

coverage run --concurrency=multiprocessing regression_tests.py
coverage combine

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

ループを高速化するPythonマルチスレッドとマルチプロセッシング

分類Dev

スレッドモジュールとマルチプロセッシングモジュールの比較

分類Dev

マルチプロセッシングプールとジェネレータ

分類Dev

フラスコウェブサーバーのマルチプロセッシングとマルチスレッド

分類Dev

LinuxでのPythonスレッドとマルチプロセッシング

分類Dev

Python-IOのマルチプロセッシングとスレッド

分類Dev

Pythonマルチプロセッシングとマネージャー

分類Dev

Pythonマルチプロセッシングと共有カウンター

分類Dev

Pythonマルチプロセッシングモジュール

分類Dev

プロセッサとイテレーションの Python マルチプロセッシング比率

分類Dev

ドキュメントコードに従うとAttributeErrorを返すPythonマルチプロセッシング

分類Dev

Pythonマルチプロセッシンググーグルコンピューティングエンジン

分類Dev

マルチスレッドと組み合わせたPythonマルチプロセッシング

分類Dev

メインスレッドをブロックするPythonマルチプロセッシングプール

分類Dev

シングルスレッドコードよりも実行速度が遅いPythonマルチプロセッシングコード

分類Dev

Pythonマルチプロセッシングプールマップとimap

分類Dev

マルチプロセッシングプールワーカーのスレッド識別子

分類Dev

プロセスプールとカスタムマネージャーを使用したPythonマルチプロセッシングイベント

分類Dev

Pythonマルチプロセッシング:ビリヤードvsマルチプロセッシング

分類Dev

Pythonマルチプロセッシング:グローバル変数とロックの必要性

分類Dev

マルチプロセッシングとスレッディングPython

分類Dev

並行性とセレン-マルチプロセッシングとマルチスレッド

分類Dev

マルチプロセッシングプールと同様のスレッドプール?

分類Dev

Python マルチプロセッシングとキュー

分類Dev

python マルチプロセッシング プールとプロセス?

分類Dev

コンテキストマネージャーとマルチプロセッシングプール

分類Dev

メソッド内のマルチプロセッシングコールバックが機能しない

分類Dev

Python AIOHTTP.webサーバーマルチプロセッシングロードバランサー?

分類Dev

Pythonマルチプロセッシンググローバル変数の更新

Related 関連記事

  1. 1

    ループを高速化するPythonマルチスレッドとマルチプロセッシング

  2. 2

    スレッドモジュールとマルチプロセッシングモジュールの比較

  3. 3

    マルチプロセッシングプールとジェネレータ

  4. 4

    フラスコウェブサーバーのマルチプロセッシングとマルチスレッド

  5. 5

    LinuxでのPythonスレッドとマルチプロセッシング

  6. 6

    Python-IOのマルチプロセッシングとスレッド

  7. 7

    Pythonマルチプロセッシングとマネージャー

  8. 8

    Pythonマルチプロセッシングと共有カウンター

  9. 9

    Pythonマルチプロセッシングモジュール

  10. 10

    プロセッサとイテレーションの Python マルチプロセッシング比率

  11. 11

    ドキュメントコードに従うとAttributeErrorを返すPythonマルチプロセッシング

  12. 12

    Pythonマルチプロセッシンググーグルコンピューティングエンジン

  13. 13

    マルチスレッドと組み合わせたPythonマルチプロセッシング

  14. 14

    メインスレッドをブロックするPythonマルチプロセッシングプール

  15. 15

    シングルスレッドコードよりも実行速度が遅いPythonマルチプロセッシングコード

  16. 16

    Pythonマルチプロセッシングプールマップとimap

  17. 17

    マルチプロセッシングプールワーカーのスレッド識別子

  18. 18

    プロセスプールとカスタムマネージャーを使用したPythonマルチプロセッシングイベント

  19. 19

    Pythonマルチプロセッシング:ビリヤードvsマルチプロセッシング

  20. 20

    Pythonマルチプロセッシング:グローバル変数とロックの必要性

  21. 21

    マルチプロセッシングとスレッディングPython

  22. 22

    並行性とセレン-マルチプロセッシングとマルチスレッド

  23. 23

    マルチプロセッシングプールと同様のスレッドプール?

  24. 24

    Python マルチプロセッシングとキュー

  25. 25

    python マルチプロセッシング プールとプロセス?

  26. 26

    コンテキストマネージャーとマルチプロセッシングプール

  27. 27

    メソッド内のマルチプロセッシングコールバックが機能しない

  28. 28

    Python AIOHTTP.webサーバーマルチプロセッシングロードバランサー?

  29. 29

    Pythonマルチプロセッシンググローバル変数の更新

ホットタグ

アーカイブ