主机端分发页面 由于视频数据比较大所以采取下载到从机上后期想读取在使用分布式读取即可
#主机控制代码import?multiprocessingimport?multiprocessing.managersimport?random,time,osfrom?multiprocessing?import?Queue#?任务队列task_queue=Queue()#?结果队列result_queue=Queue()#?提供给从机调用后得到队列中的数据#?就是接口def?return_task(): return?task_queuedef?return_result(): return?result_queueclass?QueueManager(multiprocessing.managers.BaseManager): passif?__name__=="__main__": #?开启分布式支持 multiprocessing.freeze_support() #?注册可以访问队列并得到结果的函数 QueueManager.register('get_task',callable=return_task) QueueManager.register('get_result',callable=return_result) manager=QueueManager(address=('192.168.72.139',8888),authkey='password'.encode('utf-8')) manager.start() task=manager.get_task() result=manager.get_result() for?i?in?range(1,356): print('task?add?data') #将任务放入队列 task.put(i) print('watting?for?____') for?i?in?range(1,356): ???????#将结果从队列中取出 res=result.get() print('get_data',res) manager.shutdown()
从机代码
import?multiprocessingimport?multiprocessing.managersimport?random,time,osfrom?multiprocessing?import?Queueclass?QueueManager(multiprocessing.managers.BaseManager): passif?__name__=="__main__": #?开启分布式支持 multiprocessing.freeze_support() #?注册可以访问队列并得到结果的函数 QueueManager.register('get_task') QueueManager.register('get_result') manager=QueueManager(address=('192.168.72.139',8888),authkey='password'.encode('utf-8')) manager.connect() task=manager.get_task() result=manager.get_result() for?i?in?range(1,356): try: #从队列中取出任务 data=task.get() os.system('you-get?-o?./?https://HdhCmsTestbilibili测试数据/video/av31369828/?p='+str(238+data)) result.put('client'+str(data)) except: pass
查看更多关于使用分布式+you-get多任务下载视频的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did126896