Листинг файла "main.jl"
using Distributed
npps3 = 8
# количество запускаемых процессов 
using LibPQ
using HDF5
using CSV
using DataFrames
#fbt="ArcticaM1_202309191645_Brightness_Temperature_09.h5"
#fgt="ArcticaM1_202309191645_LatLon_4km.h5"
fbt="fdata.h5"
fgt="fgeo.h5"
fid = h5open(fbt, "r")
fgd = h5open(fgt, "r")
g        = fid["Data"]
resol    = g["resolution_4km"]
dset     = resol["Brightness_Temperature_09"]
as = 100.
A        = read(dset)
glat     = fgd["Geolocation/resolution_4km/Latitude"]
lat      = read(glat)/as
glon     = fgd["Geolocation/resolution_4km/Longitude"]
lon      = read(glon)/as
radtemp91 = A /as
close(fid)
close(fgd)
# чтение из файлов данных и координат
tfsv="tcurdate.txt"
tffs = CSV.File(tfsv,header=["curdate"])  |> DataFrame
tf = tffs[1,:1]
# чтение времени из файла - строка вида "20230919 1645 "
# будет записана в базу в поле "tdate"
addprocs(npps3)
@everywhere using DataFrames
@everywhere using IterTools
@everywhere using LibPQ
@everywhere using DataFramesMeta
@everywhere include("corefunc.jl")
# подключение файла с необходимыми функциями для каждого дочернего процесса
R = [ @spawnat nidf Splitar3(radtemp91,lat,lon,nidf-1,tf) for nidf=2:9 ]
Ss = 0
for nidfs = 1:8
 global Ss = Ss + fetch(R[nidfs])
end
# запуск главной функции в параллельном режиме 
# финализация запущенных дочерних процессов

Листинг файла "corefunc.jl"
function dfcore(rdt::AbstractArray,clt::AbstractArray,cln::AbstractArray)
host="localhost"
port="5432"
db="nemo"
user="user"
pwd="pwd"
conn = LibPQ.Connection("dbname=$db user=$user password=$pwd")
# формирование коннекта к серверу БД
vr91=vec(rdt)
vlat=vec(clt)
vlon=vec(cln)
fll=maximum(vr91)
ttmax109 = 109.
if (fll > 500.)
 ttmax109 = -ttmax109
end

t900 = 200.
dfcom=DataFrame([vr91,vlon,vlat],["t91","lon","lat"])
dff1=dfcom[(dfcom.lon .> -t900).& (dfcom.t91 .> ttmax109),:]
# отсечение данных при наличии кода отсутствия (-999.)
rename!(dff1,:t91 => :radt1)
dff1[!,:tdate] .= tf
# добавление поля даты и времени к данным
insert_by_copy!(conn, "satelm1", dff1)
# запись в базу данных
end
#////end dfcore

function insert_by_copy!(con:: LibPQ.Connection, tablename:: AbstractString, df:: DataFrame)
 row_strings = imap(eachrow(df)) do row
   join((x for x in row), ",")*"\n"
   end
copyin = LibPQ.CopyIn("COPY $tablename FROM STDIN (FORMAT CSV);", row_strings)
 execute(con, copyin)
end
#////end insert_by_copy
@everywhere begin
function Splitar3(stt::AbstractArray,slat::AbstractArray,slon::AbstractArray,
nidfs,tf)

nidfm = myid() - 1
nidf = nidfs
tindss=[0,800,1392,1984,2784]
tindss8=[0,460,800,1120,1392,1664,1984,2324,2784]
tinds = tindss8
 tbn = tinds[nidf] + 1
 tfn = tinds[nidf + 1]

 sttb=stt[tbn:tfn,:]
 slatb=slat[tbn:tfn,:]
 slonb=slon[tbn:tfn,:]
tdelay= 6 / nidf + 1
println("start dfcore $nidfs ",nidfm,' ',tdelay)
dfcore(sttb,slatb,slonb)
sleep(round(tdelay))
# временная задержка для предотвращения синхронного 
# запуска дочерних процессов
end
#////end Splitar3







      
      
      
      subroutine gfdb00(nampole,date,hour,kbs)
      use remdb
      parameter(nnx=1600,nny=484)
      character*2 LS(19)
      character*1 VS(9)
      INTEGER*4 Date, Hour,CodeFile,CodeFile1
      INTEGER Def(60),isz,ik,istat,kbs
      CHARACTER(LEN=20) FHost,FHost1
      CHARACTER(LEN=4) NameDB,NameDB1
      REAL*4 Array(nnx,nny)
      CHARACTER(LEN=8) NamPole
c                     P99N012F
c                     1  4
cc      REAL*4, ALLOCATABLE :: Array(:,:)
c     kf=260601 xeon4a /'192.168.97.72'/, /'192.168.97.71'/
c     kf=050101 nod3 nod7 /'192.168.102.166'/, /'192.168.102.168'/
      CodeFile1=260601
      CodeFile=050101
      if (kbs.eq.977) then
      call CloseRemHost(FHost,  kv)
      print *,' CLOSEhst  kode = ', kv
c      DEALLOCATE(Array, STAT=ierr)
      close(2);close(23)
      goto 77
      endif
      if (kbs.eq.77) then
      open(23,file='ztout02a.txt')
      open(2,file='tout01.txt')
      open(1,file='init_date.txt')
      read(1,*)Date, Hour
      read(1,*)NamPole
      read(1,*)FHost
      read(1,*)NameDB
      call OpenRemHost(FHost,  kv)
      print *,'"',fhost,'"',' open  kode = ', kv,Date, Hour
!!!!!  open database
      call OpenRemDB(CodeFile, NameDB, 1,  kv)
      print *, ' OPEN DB ',NameDB, ' kode = ', kv
      if(kv.ne.0) then
         print *,' CLOSE  kode = ', kv
         stop
      endif
      print *,'allocate ',NamPole, kv,Def(17),Def(18),kbs
      CALL GETCRemDB(NameDB, CodeFile, NamPole, Def, kv)
      m17=Def(17)
      m18=Def(18)
      m1=350
      print *,'allocate ',NamPole, kv,Def(17),Def(18)
      IF(kv.ne.0) then
      print *, 'Allocate error ',kv
      stop
      endif
c      print *, date,hour,jk,ik,istat,nampole
      WRITE(2, *) Def
cc      ALLOCATE(Array(Def(17),Def(18)), STAT=ierr)
      close(1)
      goto 77
      endif
      mm=1
      print *,'allocate ',NamPole, kv,Def(17),Def(18),kbs
ccc ///////////////////////////////////
      CALL RDFCRemDB(NameDB,CodeFile, Date,NamPole,Hour,Array, kv)
      print *, m17,m18,Date,NamPole,Hour, kv
c
c      if (iv==1.and.il==4) then
cc      print *, Date,NamPole,Hour, kv
cc      endif

      ttarr=array(m1,m1)
      x1=ttarr
      write(2,*)nampole,Array(1,1),Array(m17,m18),ttarr*mm,kv
c8     format(f7.0,3f9.1,1x,a9,a9,a40) 
c      write(2,8)x1,pls(1,1),pls(nnx,nny),pls(m1,m1),
c     *field,units,desc
8     format(f7.0,3f9.1)
c                      ,1x,a9,a9,a40) 
      write(23,8)x1,Array(1,1),Array(nnx,nny),Array(m1,m1)
c     *field,units,desc
cc      write(3)Array
ccc ////////////////////////////////

77    continue
c      close(3)
      end

      subroutine gfdb00a(nampole,date,hour,kbs)
      use remdb
      parameter(nnx=1600,nny=484)
      character*2 LS(19)
      character*1 VS(9)
      INTEGER*4 Date, Hour,CodeFile,CodeFile1
      INTEGER Def(60),isz,ik,istat,kbs
      CHARACTER(LEN=20) FHost,FHost1
      CHARACTER(LEN=4) NameDB,NameDB1
      REAL*4 Array(nnx,nny)
      CHARACTER(LEN=8) NamPole
c                     P99N012F
c                     1  4
cc      REAL*4, ALLOCATABLE :: Array(:,:)
c     kf=260601 xeon4a /'192.168.97.72'/, /'192.168.97.71'/
