python多进程下载文件_使用多进程并发下载python文件

我在下面编写了一个代码来使用pySmartDL下载文件。我想一次下载多个文件。尝试使用多进程来实现它。但第二个过程只有在第一个过程结束时才开始。代码如下:import time

from multiprocessing import Process

from pySmartDL import SmartDL, HashFailedException

def down():

dest='/home/faheem/Downloads'

obj = SmartDL(url_100mb_file,dest, progress_bar=False,fix_urls=True)

obj.start(blocking=False)

#cnt=1

while not obj.isFinished():

print("Speed: %s" % obj.get_speed(human=True))

print("Already downloaded: %s" % obj.get_dl_size(human=True))

print("Eta: %s" % obj.get_eta(human=True))

print("Progress: %d%%" % (obj.get_progress()*100))

print("Progress bar: %s" % obj.get_progress_bar())

print("Status: %s" % obj.get_status())

print("\n"*2+"="*50+"\n"*2)

print("SIZE=%s"%obj.filesize)

time.sleep(2)

if obj.isSuccessful():

print("downloaded file to '%s'" % obj.get_dest())

print("download task took %ss" % obj.get_dl_time(human=True))

print("File hashes:")

print(" * MD5: %s" % obj.get_data_hash('md5'))

print(" * SHA1: %s" % obj.get_data_hash('sha1'))

print(" * SHA256: %s" % obj.get_data_hash('sha256'))

data=obj.get_data()

else:

print("There were some errors:")

for e in obj.get_errors():

print(str(e))

return

if __name__ == '__main__':

#jobs=[]

#for i in range(5):

print 'Link1'

url_100mb_file = ['https://softpedia-secure-download.com/dl/45b1fc44f6bfabeddeb7ce766c97a8f0/58b6eb0f/100255033/software/office/Text%20Comparator%20(v1.2).rar']

Process(target=down()).start()

print'link2'

url_100mb_file = ['https://www.crystalidea.com/downloads/macsfancontrol_setup.exe']

Process(target=down()).start()

这里link2在link1完成时开始下载,但我需要同时下载这两个。我想实现这个方法,以执行多达10下载一次。那么,使用多处理是好的吗?

有没有其他更好的内存效率的方法。

我是这些代码的初学者,所以请轻松定义答案。。

问候

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值