penggunaan bersamaan ruang kerja in_memory di arcpy

8

saya menggunakan skrip python yang menghilangkan poligon kecil dari kelas fitur. skrip ini membuat kelas fitur sementara dengan nama-nama tetap (hardcoded) di ruang kerja "in_memory". contoh:

arcpy.CopyFeatures_management("in_fc","in_memory/item_a")

ini adalah skrip yang cukup dapat digunakan kembali, jadi saya menggunakannya di banyak titik dalam rantai geoproses.

Apakah saya dalam bahaya, bahwa skrip yang sama dipanggil dua kali dari proses yang berbeda (pada saat yang sama) akan mengalami konflik di, misalnya "in_memory / item_a"? atau apakah ruang kerja "in_memory" terpisah untuk setiap proses?

saya menggunakan ArcInfo 10.0.

Ben si beruang
sumber

Jawaban:

8

Untuk menguji pertanyaan Anda, saya menulis skrip cepat yang saya jalankan dua salinan secara bersamaan - satu sebagai alat skrip di ArcMap dan satu di Pythonwin. Agak mengherankan saya, saya tidak dapat menjalankannya pada saat yang sama karena ruang kerja "in_memory" dibagikan. Namun, ada cara untuk mengatasi hal ini. Anda dapat menambahkan cek output untuk menentukan apakah file dalam memori ada, dan beri nama lain jika:

i=0
check = 0
while check == 0:
    memoryFeat = "in_memory" + "\\" + "testMemoryFeature" + str(i)
    if arcpy.Exists(memoryFeat):
        i+=1
    else:
        check = 1

Ini akan mencoba memberi nama pada fitur memori Anda testMemoryFeature0. Jika fitur memori itu sudah ada, ia akan mencoba menamainya testMemoryFeature1, dan seterusnya hingga menemukan nama yang cukup.

kaki biru
sumber
7
Anda juga dapat menggunakan fungsi arcpy.CreateUniqueName .
Alex Markov
Sangat berguna! Saya tidak tahu ini ada.
bluefoot