スクリプトのインプロセス実行
スクリプト ツールで Python スクリプトを実行する場合は、次の図に示すように [インプロセスで Python スクリプトの処理を実行] オプションをオンにする必要があります。このオプションの適用対象となるのは、Python スクリプトだけです。
インプロセス実行が可能なスクリプトは、ArcPy をインポートするスクリプト(次の図を参照)、および arcgisscripting.create() を使用してジオプロセッサ オブジェクトを作成するスクリプトだけです。
import arcpy
次の図に示すような Dispatch を使用したスクリプトは、[インプロセスで Python スクリプトの処理を実行] がオンになっている場合でも、インプロセスで実行されません。
import win32com.client gp = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1")
[インプロセスで Python スクリプトの処理を実行] オプションが導入されたのは、ArcGIS 9.3 です。9.3 より前は、Python スクリプトがプロセス外で実行されていました。プロセス外で実行するには、ArcGIS で別のプロセスを起動する(つまり、別のプログラムを起動する)必要がありますが、この起動には時間がかかります。プロセス外で実行する場合、2 つのプロセス間でメッセージをやり取りする際にパフォーマンス上の問題が伴います。バージョン 9.3 以降では、Python が ArcGIS に組み込まれ、スクリプトをインプロセスで実行できるようになったため、起動時およびメッセージング時のあらゆるオーバーヘッドが解消されました。
インプロセスで実行するには、Python インポート ディレクティブで読み込まれるすべてのモジュールに、インプロセス実行に必要なロジックを実装する必要があります。すべての標準 Python ライブラリ(例: os、string、time)には、必要なロジックが実装してあります。ただし、サードパーティから入手した非標準モジュールには、インプロセス実行に必要なロジックが実装されていない場合もあります。不明な問題が発生した場合は、スクリプトを実行する際にインプロセス オプションをオフにしてから、もう一度スクリプトの実行を試してください。プロセス外で実行したときに問題が解消された場合は、インポートされたモジュールのいずれかに問題のある可能性がかなり高いと言えます。このような場合は、[インプロセスで Python スクリプトの処理を実行] オプションをオフにしておいてください。