adding chapter 7 source code
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
#threads_casestudy.py
|
||||
from queue import Queue
|
||||
from threading import Thread
|
||||
import time
|
||||
|
||||
from getfilelistpy import getfilelist
|
||||
import gdown
|
||||
THREAD_POOL_SIZE = 5
|
||||
|
||||
#update the resource object as per your API key and the gdriver folder id
|
||||
resource = {
|
||||
"api_key": "AIzaSyDYKmm85keq4bF1DpYa2bxddKrGns4z0",
|
||||
"id": "0B8TxHW2Ci6dbckVwtTlV3RUU",
|
||||
"fields": "files(name,id,webContentLink)",
|
||||
}
|
||||
|
||||
class DownlaodWorker(Thread):
|
||||
|
||||
def __init__(self, name, queue):
|
||||
Thread.__init__(self)
|
||||
self.name = name
|
||||
self.queue = queue
|
||||
|
||||
def run(self):
|
||||
while True:
|
||||
# Get the file id and name from the queue
|
||||
item1 = self.queue.get()
|
||||
try:
|
||||
gdown.download( item1['webContentLink'],
|
||||
'./files/{}'.format(item1['name']),
|
||||
quiet=False)
|
||||
finally:
|
||||
self.queue.task_done()
|
||||
|
||||
def main():
|
||||
def get_files(resource):
|
||||
#global files_list
|
||||
res = getfilelist.GetFileList(resource)
|
||||
files_list = res['fileList'][0]
|
||||
return files_list
|
||||
|
||||
start_time = time.monotonic()
|
||||
|
||||
files = get_files(resource)
|
||||
|
||||
#add files info into the queue
|
||||
queue = Queue()
|
||||
for item in files['files']:
|
||||
queue.put(item)
|
||||
|
||||
for i in range (THREAD_POOL_SIZE):
|
||||
worker = DownlaodWorker("Thread {}".format(i+1),queue)
|
||||
worker.daemon = True
|
||||
worker.start()
|
||||
|
||||
queue.join()
|
||||
end_time = time.monotonic()
|
||||
print('Time taken to download: {} seconds'.
|
||||
format( end_time - start_time))
|
||||
main()
|
||||
Reference in New Issue
Block a user