shell根据url文件多线程下载图片控制并发

本文详细介绍了一种利用多线程技术从URL列表批量下载图片的方法。通过阅读本文,你将了解到如何根据系统核心数合理设置多线程数量,避免因并发过多导致系统资源紧张。此外,还提供了具体实现代码及核心数查询方式,帮助读者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.参考资料

https://github.com/espectre/kaggle_Human-Protein-Atlas-Image-Classification/blob/master/multi_thread_down_pic_from_url.py

http://www.cnblogs.com/emanlee/p/3587571.html

https://www.kaggle.com/therealpythonman/get-350k-additional-hpa-images/notebook

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值