1.需求
已经获得图片url的txt文件url.txt,想要多线程下载图片
2.难点
如何实现多线程?(速度快)
如何控制并发数量 ?(以防太多系统爆)
3.代码
url.txt为url文件;
i<=100的100为多线程的数量,可以根据系统核心数选择
查看核心数代码
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
多线程代码
#! /bin/bash
source /etc/profile;
# -----------------------------
tempfifo=$$.fifo # $$表示当前执行文件的PID
# -----------------------------
trap "exec 1000>&-;exec 1000<&-;exit 0" 2
mkfifo $tempfifo
exec 1000<>$tempfifo
rm -rf $tempfifo
for ((i=1; i<=100; i++))
do
echo >&1000
done
cat url.txt|while read line
do
read -u1000
{
wget $line
echo >&1000
} &
done
wait
echo "done!!!!!!!!!!"
4.参考资料
http://www.cnblogs.com/emanlee/p/3587571.html
https://www.kaggle.com/therealpythonman/get-350k-additional-hpa-images/notebook