fixes
This commit is contained in:
parent
0f7cddd5a6
commit
bf5c616f01
@ -12,83 +12,103 @@ function g_python {
|
||||
then
|
||||
local python_input="$g_tmp/$$-g_python_input"
|
||||
local python_output="$g_tmp/$$-g_python_output"
|
||||
local python_error="$g_tmp/$$-g_python_error"
|
||||
# create fifo pipe
|
||||
[ -p "$python_input" ] || mkfifo "$python_input"
|
||||
[ -p "$python_output" ] || mkfifo "$python_output"
|
||||
[ -p "$python_error" ] || mkfifo "$python_error"
|
||||
# run bc in background und switch i/o to pipes
|
||||
python3 -iu < "$python_input" > "$python_output" 2>/dev/null &
|
||||
python3 -iuq < "$python_input" > "$python_output" 2> "$python_error" &
|
||||
# store in filedescriptiors
|
||||
exec {g_fd_python_in}> "$python_input"
|
||||
exec {g_fd_python_out}< "$python_output"
|
||||
exec {g_fd_python_error}< "$python_error"
|
||||
fi
|
||||
# send calculation and read result
|
||||
|
||||
# send python command
|
||||
echo "$@
|
||||
print('')" >&${g_fd_python_in}
|
||||
|
||||
# read output
|
||||
read -u ${g_fd_python_out} g_python_result
|
||||
|
||||
local g_errline
|
||||
local g_err_array
|
||||
|
||||
# look for error
|
||||
while read -t 0.001 -u ${g_fd_python_error} g_errline
|
||||
do
|
||||
[[ "$g_errline" =~ \>\>\>$ ]] && break
|
||||
[ -z "$g_errline" ] && break
|
||||
echo $g_errline 1>&2
|
||||
g_err_array+=("$g_errline")
|
||||
done
|
||||
[ -n "$g_err_array" ] && return 1
|
||||
}
|
||||
|
||||
#function g_python {
|
||||
#
|
||||
# local g_python_tmp=${g_tmp}/$$
|
||||
# g_python_out=${g_python_tmp}/python-out
|
||||
# local g_python_in=${g_python_tmp}/python-in
|
||||
# local g_python_error=${g_python_tmp}/python-error
|
||||
# local g_python_jobs
|
||||
# mapfile -t g_python_jobs < <(jobs -r)
|
||||
# unset g_python_result
|
||||
#
|
||||
# # Use python in backround for multiple python commands running much faster
|
||||
# #if [ -z "${g_python_running}" ]
|
||||
# if [[ ${g_python_jobs[*]} != *python-pipeexec.py* ]]
|
||||
# then
|
||||
# mkdir -p ${g_python_tmp}
|
||||
# if [ -s ${g_python_error} ]
|
||||
# then
|
||||
# g_echo_error "From last python run: $(cat ${g_python_error})"
|
||||
# fi
|
||||
# [ -p ${g_python_in} ] || mkfifo ${g_python_in}
|
||||
# echo "while 1:
|
||||
# exec(open(\"${g_python_in}\").read())
|
||||
# print('DONE')
|
||||
#" >${g_python_tmp}/python-pipeexec.py
|
||||
#
|
||||
# # python stream channel
|
||||
# { python3 -u ${g_python_tmp}/python-pipeexec.py >>${g_python_out} 2>>${g_python_error} & }
|
||||
# g_python_running="true"
|
||||
# fi
|
||||
#
|
||||
# # do python
|
||||
# >${g_python_out}
|
||||
# >${g_python_error}
|
||||
# echo $@ >${g_python_in}
|
||||
#
|
||||
# while true
|
||||
# do
|
||||
#
|
||||
# # Check for output
|
||||
# if [ -s ${g_python_out} ]
|
||||
# then
|
||||
# mapfile -t g_python_result <${g_python_out}
|
||||
# if [[ ${g_python_result[-1]} == DONE ]]
|
||||
# then
|
||||
# # remove the DONE output (last array element
|
||||
# unset g_python_result[-1]
|
||||
# break
|
||||
# fi
|
||||
# fi
|
||||
#
|
||||
# # Check for error
|
||||
# mapfile -t g_python_jobs < <(jobs -r)
|
||||
# if [ -s "${g_python_error}" ] || [[ ${g_python_jobs[*]} != *python-pipeexec.py* ]]
|
||||
# then
|
||||
# g_echo_error "Python Progress not running:
|
||||
#$(cat ${g_python_error})"
|
||||
# return 1
|
||||
# fi
|
||||
#
|
||||
# # sleep a short time
|
||||
# sleep 0.1
|
||||
# done
|
||||
#
|
||||
#}
|
||||
|
||||
function g_python_old {
|
||||
|
||||
local g_python_tmp=${g_tmp}/$$
|
||||
g_python_out=${g_python_tmp}/python-out
|
||||
local g_python_in=${g_python_tmp}/python-in
|
||||
local g_python_error=${g_python_tmp}/python-error
|
||||
local g_python_jobs
|
||||
mapfile -t g_python_jobs < <(jobs -r)
|
||||
unset g_python_result
|
||||
|
||||
# Use python in backround for multiple python commands running much faster
|
||||
#if [ -z "${g_python_running}" ]
|
||||
if [[ ${g_python_jobs[*]} != *python-pipeexec.py* ]]
|
||||
then
|
||||
mkdir -p ${g_python_tmp}
|
||||
if [ -s ${g_python_error} ]
|
||||
then
|
||||
g_echo_error "From last python run: $(cat ${g_python_error})"
|
||||
fi
|
||||
[ -p ${g_python_in} ] || mkfifo ${g_python_in}
|
||||
echo "while 1:
|
||||
exec(open(\"${g_python_in}\").read())
|
||||
print('DONE')
|
||||
" >${g_python_tmp}/python-pipeexec.py
|
||||
|
||||
# python stream channel
|
||||
{ python3 -u ${g_python_tmp}/python-pipeexec.py >>${g_python_out} 2>>${g_python_error} & }
|
||||
g_python_running="true"
|
||||
fi
|
||||
|
||||
# do python
|
||||
>${g_python_out}
|
||||
>${g_python_error}
|
||||
echo $@ >${g_python_in}
|
||||
|
||||
while true
|
||||
do
|
||||
|
||||
# Check for output
|
||||
if [ -s ${g_python_out} ]
|
||||
then
|
||||
mapfile -t g_python_result <${g_python_out}
|
||||
if [[ ${g_python_result[-1]} == DONE ]]
|
||||
then
|
||||
# remove the DONE output (last array element
|
||||
unset g_python_result[-1]
|
||||
break
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check for error
|
||||
mapfile -t g_python_jobs < <(jobs -r)
|
||||
if [ -s "${g_python_error}" ] || [[ ${g_python_jobs[*]} != *python-pipeexec.py* ]]
|
||||
then
|
||||
g_echo_error "Python Progress not running:
|
||||
$(cat ${g_python_error})"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# sleep a short time
|
||||
sleep 0.1
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user