並列処理ファクター環境を考慮するツールでは、複数のプロセスにまたがる処理が分割されて実行されます。
最近の多くのコンピューターは、マルチコア CPU を搭載しています。 複数のコアを活用し、ジオプロセシングの処理を複数のプロセスに分散することによって、処理性能を高速化できます。 並列処理によって得られる性能上のメリットは、ツールによって異なります。
使用上の注意
- この環境設定の値は、ツールが処理を分散する論理プロセス数を決定します。 それらの論理プロセスは、コンピューターに搭載されたハードウェア コアの間で分割されます。 ハードウェア コアの数は、この設定の影響を受けません。
- この環境設定を考慮する各ツールは、特定のコンピューターに与えられるデフォルト (組み込み) の論理プロセス数を持っています。 使用するデータ、操作、および使用可能なリソースに基づいて、このデフォルトを変更できます。
- % 記号を使用してパーセント値を指定した場合、使用されるプロセス数は、指定したパーセント値をコンピューター上のコア数に掛けた値を、最も近い整数に丸めた数になります。 たとえば、4 コア コンピューターで、50% を設定すると演算は 2 つのプロセス (50% * 4 = 2) に、66% を設定すると 3 つのプロセス (66% * 4 = 2.64、3 に切り上げ) に、100% を設定すると 4 つすべてのプロセス (100% * 4 = 4) に分散します。
- SQL Server Express データベースを使用してジオプロセシングを行う場合、並列プロセスの数を 2 つに制限する必要があります。
SQL Server Express では、同時に 3 つまでの接続が可能です。 処理を行う各 CPU は、サーバーに接続する必要があります。 さらに、ツールを実行する ArcGIS Desktop などのソフトウェアも 1 つの接続プロセスとしてカウントされます。そのため、並列処理で使用可能な作業用の接続プロセスは、2 つしか残りません。
- コンピューターに搭載されたコアの数よりも多くのプロセスを指定すると、性能の低下を招きます。 これは、複数のプロセスの間で 1 つのコアのリソースが競合するためです。 この競合を回避できるように環境を指定するには、100% よりも小さいパーセント値を使用するか、コンピューター上のコアの数よりも少ないプロセス数を使用します。
ただし、すべてのプロセスがディスクまたはエンタープライズ データベース接続に I/O バインドされている場合、搭載されているコアの数よりも多くのプロセス数を指定したほうが、性能が向上することがあります。 たとえば、モザイク データセットがエンタープライズ データベースに格納されている場合、[モザイク データセットにラスターを追加 (Add Rasters To Mosaic Dataset)] ツールは I/O バウンドされます。 [オーバービューの構築 (Build Overviews)] ツールも、主にディスクに I/O バインドされます。 100% よりも大きいパーセント値を指定するか、コンピューター上のコア数よりも多いプロセス数を指定することによって、コンピューターに搭載されているコアの数よりも多くのプロセスを使用できます。 たとえば、4 コア コンピューターを使用する場合、8 または 200% を指定すると、処理は 8 つのプロセスに分散されます。
- Background Geoprocessing (64-bit) では、並列処理ファクター環境はサポートされていません。
ダイアログの構文
並列処理ファクター - ツールが処理を分散するプロセス数。
- 空白 (空) - 使用するプロセス数を各ツールに決定させます。 これがデフォルトです。
- 0 - 処理を複数のプロセスに分散しません。
- n - 指定したプロセス数が使用されます。
- n% - 指定したパーセンテージを使用してプロセス数が計算されます。 プロセス数 = システム上のコア数 * n / 100
スクリプトの構文
arcpy.env.parallelProcessingFactor = string
パラメーター | 説明 |
---|---|
空の文字列 (空白) | 使用するプロセス数を各ツールに決定させます。これがデフォルトです。 |
0 | 処理を複数のプロセスに分散しません。 |
n | 指定したプロセス数が使用されます。 |
n% | 指定したパーセンテージを使用してプロセス数が計算されます。プロセス数 = システム上のコア数 * n / 100 |
スクリプトの例
import arcpy
# Use half of the cores on the machine
arcpy.env.parallelProcessingFactor = "50%"