ホームページ  >  に質問  >  本文

python 多进程使用

假设:有个数据操作,处理100万条数据,每个数据的value+1。
如简单代码假设

for x in range(1,100):
    x++

从数据库获取100条了,然后想多进程去执行x++?
还是说多进程去数据库获取数据?
谢谢了

迷茫迷茫2741日前532

全員に返信(4)返信します

  • PHPz

    PHPz2017-04-18 10:35:22

    質問があります: それがデータベース内のデータである場合、SQL を実行しないのはなぜですか? これはマルチプロセスよりもはるかに効率的です。
    指定された 2 つのうちの 1 つを選択する必要がある場合は、次のことを検討してください。 リーリー

    返事
    0
  • 怪我咯

    怪我咯2017-04-18 10:35:22

    まずプロデューサーとして元のデータをキュー(キュー)に格納します
    次にキューからデータを取得し、操作を実行し、コンシューマーとして動作します
    このとき、コンシューマー上で複数のスレッドを開くことができます(もちろん、ロックをうまく処理すれば、プロデューサーはマルチスレッドも実行できます)

    リーリー

    キュー内に常に要素が存在する場合、スレッドは動作を継続します。

    返事
    0
  • PHPz

    PHPz2017-04-18 10:35:22

    実際、Python でマルチ処理を実装する最良の方法は multiprocessing中的map

    を使用することです。

    例 (Python 3):

    リーリー リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 10:35:22

    上記のように、データ読み込みとデータ+1の2つの関数を直接1つのオペレーションに記述し、複数のプロセスで動作させることができます。 CPU コアの数に応じてプロセス プールのサイズを設定します。複数のプロセス間でメモリ共有や直接通信がないため、最初に複数のプロセスを使用してデータベースからすべてのデータを読み取り、次に複数のプロセスを使用して val+1 を実行できます

    返事
    0
  • キャンセル返事