python多线程框架_基于python和bash的多线程任务框架 不要让cpu闲着了
[Bash shell] 純文本查看 復制代碼#! /bin/bash
##########################################################################################################
#part1:defile your job(第一部分,定義單核任務,需要根據你的實用任務改動)
date >>time
Nproc=40 #prcocess used here (要用的線程數)
ls *ligand.mol2 >list #list of jobs (所有的任務放到一個list里面)
Njob=$(echo $(cat list|wc -l)+1|bc) #total jobs+1 (統計總任務數目)
function jobrun #define your job (定義一個函數任務)
{
j=$(cat list|sed -n "$1"p|cut -c 1-4) #$1 is a parameter for jobid ($1作為函數輸入 即任務號 這里首先要找到任務號對應的分子)
prepare_dpf42.py -l $j"_ligand.pdbqt" -r $j"_receptor.pdbqt" -o tmp2 #(為了簡單期間這里沒有寫如何計算格子 如何計算格點文件 這里是從準備dpf文件開始)
autodock4 -p $j.dpf -l $j.dlg #(對接)
}
##############################################################################################################
#part2:mutiple process framwork (第二部分,多線程框架,可以不用懂不用改動)
PID=() #PID is an array to store the pid of your job (PID 用于儲存每個線程的pid)
for ((i=1;i
do
for ((Ijob=0; Ijob
do
if [[ $i -ge $Njob ]]; #(如果任務都完成了就退出循環)
then
break;
fi
if [[ ! "${PID[Ijob]}" ]] || ! kill -0 ${PID[Ijob]} 2> /dev/null; then #(如果線程沒有被占用)
echo start $i with $Ijob
jobrun $i $Ijob& #(用Ijob線程執行任務i)
PID[Ijob]=$! #(任務完成 釋放線程Ijob)
i=$((i+1))
fi
done
##########################################################################################
wait #(等所有線程都空閑下來)
done
echo job finished!
date >>time
總結
以上是生活随笔為你收集整理的python多线程框架_基于python和bash的多线程任务框架 不要让cpu闲着了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python打印九九加法表_Python
- 下一篇: linux nohup不生成日志,lin