0

Stackoverflowにはいくつかの例があるため、この質問については申し訳ありません。私はPython言語にまったく慣れていないので、疑問のいくつかを明確にするために書いています。

私は関数を書きました:

def clipmyfile(inFile,poly,outFile):
... # doing something with inFile and poly and return outFile

通常、私はこれを行います:

clipmyfile(inFile="File1.txt",poly="poly1.shp",outFile="res1.txt")
clipmyfile(inFile="File2.txt",poly="poly2.shp",outFile="res2.txt")
clipmyfile(inFile="File3.txt",poly="poly3.shp",outFile="res3.txt")
......
clipmyfile(inFile="File21.txt",poly="poly21.shp",outFile="res21.txt")

私はこの例で読んだことがあります同時にいくつかのPythonプログラムを実行し、私は使用できます(しかしおそらく私は間違っています)

from multiprocessing import Pool
p = Pool(21)  # like in your example, running 21 separate processes

関数を同時に実行し、分析を高速化する

私は次のステップを理解していなかったと言って本当に正直です。

助けと提案を事前に感謝しますGianni

4

1 に答える 1

1

提供した例で使用されているマップは、1 つの引数を受け取る関数に対してのみ機能します。これに対する解決策をここで見ることができます: Python multiprocessing pool.map for multiple arguments

あなたの場合、あなたがすることは次のとおりです(ファイル、ポリ、アウトを含む3つの配列があると仮定します):

def expand_args(f_p_o):
    clipmyfile(*f_p_o)  

files = ["file1.txt", "file2.txt"] 
polis = ["poli1.txt", "poly2.txt"]
outis = ["out1.txt", "out2.txt"]
len_f = len(files)
p = Pool()
p.map(expand_args, [(files[i], polis[i], outis[i]) for i in xrange(len_f)])
于 2012-10-12T10:46:39.263 に答える