kdb q - отображение таблиц из подчиненных процессов - PullRequest
0 голосов
/ 05 октября 2018

У меня есть дорогая функция

mainfunc:{[batch;savepath] 
     ...compute large table depending on batch and save it to savepath...
}

, которая копируется в подчиненные процессы , и каждый процесс обрабатывает различные batch входные данные для функции.
Скажем, мне нужновыполнить функцию на input:til 1000, затем процесс 1 выполнит mainfunc[input[til 50];savepath], а процесс 2 выполнит mainfunc[input[50+til 50]].Поскольку они являются процессами, а не потоками, сохранение в файл возможно.

Причина, по которой я стараюсь избегать потоков, заключается в том, что вывод из mainfunc представляет собой большую таблицу, и если при сериализации будет много накладных расходов,таблица была отправлена ​​в основной процесс и оттуда сохранена.

Теперь я сталкиваюсь с ограничением, которое я хочу выводить на экран большой таблицы в каждом процессе.Однако для отображения (в случае таблицы с символами) необходимо изменить файл sym, сохраняемый для перечисления, и я получаю исключение, как только 2 процесса пытаются получить доступ к этому файлу sym.Я использую что-то вроде

splaydirname set .Q.en[hsym `$savepath] largetable; / .Q.en locks the sym file enumeration is done

Как обойти это?

Спасибо за помощь

...