[アイフル蔚山第1期]30コンピュータパワーUP

3469 ワード

学習目標

  • マルチタスク処理、並列プログラミング、同期について説明します.
  • Pythonを使用してマルチスレッドとマルチプロセスを実装する方法について説明します.
  • とPythonの同時発生.futuresを使用してパラレルプログラミングを実現します.
  • ポスト


    学習内容


    30.パソコンパワーUP


    30.1. マルチタスク処理


    30.1.1マルチタスク処理とは?


    計算リソース、すなわち並列計算、分散計算などの概念を最適化する方法.

    2つのマルチタスク処理方式


  • 同時
    1つのプロセッサが同時に複数のタスクを実行する概念

  • へいれつせい
    複数のプロセッサが同じタスクを同時に実行
  • 同期と非同期


  • どうきモード
    前のタスクの終了を無条件に待機し、次のタスクを実行します.
  • あることは順番に実行されます.
  • リクエストおよびリクエストに対する応答は連続的に実行される(したがって、リクエストが遅延しても待ち続ける).

  • 非同期
    インバウンド操作の待機中に他のタスクを処理
  • ある事柄は非順序で実行される.
  • リクエストおよびリクエストに対する応答は不連続である.
  • 特定のコードの演算が完了するまで、コードの実行を停止するのではなく、まず次のコードを実行し、中間実行のコードは主にコールバック関数で接続されます.
  • I/O Bound vs CPU Bound

  • I/Oフラクチャ:入力と出力でデータ(ファイル)を処理するのに時間がかかります.
  • CPUインバウンド:複雑な数式計算やグラフィック処理など、多くの計算が必要です.
  • 30.1.2プロセス、スレッド、構成


    プロセス?


    プログラム自体とプログラムステータスのワークユニットをメモリで実行します.

    Thread(スレッド)


    スレッド(thread)は、任意のプログラム、特にプロセスで実行されるストリームの単位です.

    プロファイル


    コードでは、システムの速度が遅い部分や、大量のRAMが使用されている場所を特定したい場合に使用します.

    30.1.3 Scale Up vs Scale Out


    Scale-Upは1台のコンピュータの性能を最適化する方法であり、Scale-Outは複数のコンピュータを1台のコンピュータとして使用する.

    30.2. Pythonでのマルチスレッドの使用


    30.2.1ねじの作成


    Pythonでは,マルチスレッドの実装にthreadingモジュールを用いる

    マルチスレッド

  • スレッドモジュール
  • のインポート
  • クラス継承Thread,
  • ねじの作成を確認


    関数名を出力すると、関数オブジェクトをチェックできます.

    30.2.2ねじの作成と使用

  • インスタンスでねじを作成することもできます.
  • をインスタンス化するには、targetとargsの値をThreadクラスのパラメータとします.argsに追加されたパラメータは、ねじ関数のパラメータに移動します.
  • t = Thread(target=함수이름, args=())
  • Threadクラスは、start()およびjoin()のようなスレッド動作に関連する方法を含む.Threadとして実行する関数を定義し、start()でスレッドを実行します.
  • 30.3. Pythonで複数のプロセスを使用


    Pythonでは、マルチプロセッシングモジュールを使用してマルチプロセスを実現できます.

    プロセスの作成


    プロセスインスタンスを作成したら、targetパラメータとargsパラメータに関数名と関数パラメータをそれぞれ渡します.

    プロセスの使用


    プロセスクラスにはstart()、join()、terminate()などのプロセス動作に関連するメソッドがあります.
    p = mp.Process(target=delivery, args=())
    p.start() # 프로세스 시작
    p.join() # 실제 종료까지 기다림 (필요시에만 사용)
    p.terminate() # 프로세스 종료
    30~8を確認する必要があります