Pythonのより複雑なプロセス(マルチプロセッシング)使用例説明

本論文では、Pythonのより複雑なプロセス(マルチプロセッシング)の使用例を示します。ご参考のためにあなたに共有します。次のように具体的な分析は次のとおりです。

(私は私たちの共通のCPythonと話している)Pythonで制限があるため。あなただけの完全なCPUコアを使用することができます。
Pythonは非常に簡単なマルチプロセスパッケージのマルチプロセッシングを使用するために提供し、あなただけの関数を定義する必要があり、Pythonはあなたのための他のすべてのものを行います。このパッケージを使用すると、簡単に同時に実行される単一のプロセスからの変換を完了することができます。

1、新しい単一のプロセス

我々は、プロセスの少量を作成する場合は、次のようになります

import multiprocessing
import time
def func(msg):
  for i in xrange(3):
    print msg
    time.sleep(1)
if __name__ == "__main__":
  p = multiprocessing.Process(target=func, args=("hello", ))
  p.start()
  p.join()
  print "Sub-process done."

図2に示すように、プロセス・プールの使用

はい、あなたは、スレッドプールを、右に読んでいません。それはあなたがマルチコアCPU上で実行することができますが、また、使用することは非常にシンプル。

使用apply_asyncに注意して非同期に落ちる場合、それはブロックされたバージョンになります。

プロセス= 4同時プロセスの最大数です。

import multiprocessing
import time
def func(msg):
  for i in xrange(3):
    print msg
    time.sleep(1)
if __name__ == "__main__":
  pool = multiprocessing.Pool(processes=4)
  for i in xrange(10):
    msg = "hello %d" %(i)
    pool.apply_async(func, (msg, ))
  pool.close()
  pool.join()
  print "Sub-process(es) done."

3、プールを使用して、その結果に焦点を当てる必要

多くの場合、我々は複数のプロセスを実行する必要がありますが、また次のように、各プロセスの結果の実装に焦点を当てる必要がありませんのみ:

import multiprocessing
import time
def func(msg):
  for i in xrange(3):
    print msg
    time.sleep(1)
  return "done " + msg
if __name__ == "__main__":
  pool = multiprocessing.Pool(processes=4)
  result = []
  for i in xrange(10):
    msg = "hello %d" %(i)
    result.append(pool.apply_async(func, (msg, )))
  pool.close()
  pool.join()
  for res in result:
    print res.get()
  print "Sub-process(es) done."

私は誰もが非常に広いPythonの学習リソースの収集を推奨するために、あなたへの書き込み入力する]をクリックし、共有に学習する前に、上級プログラマがあります

経験は、研究ノート、ビジネス経験の機会があり、そして誰もが慎重に戦闘へのpythonを整理するための情報の項目をゼロベース、

最新の技術上のあなたにPythonの日は、細部のメッセージを残すことを学ぶの見通しは、
紙皆Pythonプログラミングのヘルプを願っています。

公開された10元の記事 ウォンの賞賛0 ビュー3952

おすすめ

転載: blog.csdn.net/haoxun11/article/details/104887027