многопроцессорная обработка нескольких итераций на python - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь обработать данные в битах, используя мультиобработку, и у меня работает следующий код:

if __name__ == '__main__': 
    for q in query_list: 
        out_name = "Contour_Other" + str(q[0]) + ".gdb"
        arcpy.CreateFileGDB_management(out_folder_path,out_name)
        dest_gdb = out_folder_path + "/" + out_name 
        generated_filegdb_list.append(dest_gdb)
        query = "objectid > " + str(q[0]) + " AND objectid <= " + str(q[1])
        output_path = dest_gdb + "/" + large_featureclass[14:] + str(q[0]) 
        generated_features_list.append(output_path)
        p = multiprocessing.Process(target=arcpy_select_analysis, args = (large_featureclass, output_path, query ))
        p.start()
    processor_list.append(p)

Что он делает, это берет query_list, который является списком списков [[0,10], [11,20], [21,30]] и т. Д., Создает группу файлов базы геоданных и использует оператор select выводить отдельные списки в отдельные создаваемые базы геоданных.

Проблема возникает, когда я пытаюсь изменить код для размещения другой итерации, поэтому я изменяю код на:

if __name__ == '__main__': 
    for features in feature_list: 
        for q in query_list: 
            out_name = "Contour_Other" + str(q[0]) + ".gdb"
            arcpy.CreateFileGDB_management(out_folder_path,out_name)
            dest_gdb = out_folder_path + "/" + out_name 
            generated_filegdb_list.append(dest_gdb)
            query = "objectid > " + str(q[0]) + " AND objectid <= " + str(q[1])
            output_path = dest_gdb + "/" + large_featureclass[14:] + str(q[0]) 
            generated_features_list.append(output_path)
            p = multiprocessing.Process(target=arcpy_select_analysis, args = (large_featureclass, output_path, query ))
            p.start()
            processor_list.append(p)

Где feature_list - это список, содержащий три отдельные функции (например, [Contours, Contours_10, Contours_2]) и т. Д. Я ожидал, что это будет код для повторения успешного завершения, но только для 3 различных функций.

Вместо этого я вижу, что новому коду удается добраться до части созданного_файла_пользователя (output_path), но не удается передать какие-либо данные с помощью многопроцессорной обработки. Часть Процесса

...