python 分布式進程體驗

來源:互聯網
上載者:User

標籤:

抽了點時間體驗了一把python 分布式進程,有點像分散式運算的意思,不過我現在還沒有這個需求,先把簡單體驗的指令碼發出來,供路過的各位高手指教註:需要先下載multiprocessing 的python包支援才行。管理端:cat  task_manager.py  #!/usr/bin/env python#coding:utf8import random,time,Queue,jsonfrom multiprocessing.managers import BaseManager#發送任務的隊列:task_queue = Queue.Queue()#接收結果的隊列:result_queue = Queue.Queue()#從BaseManager 繼承的QueueManager:class QueueManager(BaseManager):    pass#把兩個Queue 都注岫到網路上,callable 參數關聯了Queue對象:QueueManager.register(‘get_task_queue‘,callable=lambda:task_queue)QueueManager.register(‘get_result_queue‘,callable=lambda:result_queue)#綁定連接埠5000 設定驗證碼‘123456‘manager = QueueManager(address=(‘‘,5000),authkey=‘123456‘)#啟動Queue:manager.start()#獲得通過網路訪問的Queue對象:task = manager.get_task_queue()result = manager.get_result_queue()#放任務進去:print ‘put tasks ........‘shell_cmd = [‘date‘,‘hostname‘,‘uptime‘]print ‘Put task \033[1;31;2m [%s] \033[0m..‘ %shell_cmdwhile True:    print ‘get result.....‘    task.put(shell_cmd)    r = result.get()    print ‘Result:\033[1;32;40m %s \033[0m...‘ %r    manager.shutdown()用戶端:#!/usr/bin/env python#coding:utf8import time,sys,Queue,os,commandsfrom multiprocessing.managers import BaseManager#建立類似的QueueManager:class QueueManager(BaseManager):    pass#由於這個queuemanager 只從網路上擷取queue,所以註冊時只提供名字:QueueManager.register(‘get_task_queue‘)QueueManager.register(‘get_result_queue‘)#串連到伺服器 也就是迍務器server_addr = ‘10.1.10.15‘print ‘Connect to server %s...‘ %server_addr#連接埠和驗證碼注意保持與taskmanager.py的一致m = QueueManager(address=(server_addr,5000),authkey=‘123456‘)#從網路連接m.connect()#擷取Queue的對象task = m.get_task_queue()result = m.get_result_queue()#從task隊列取作務,並把結果寫處result隊列n = task.get(timeout=1)print n,type(n)s,v =commands.getstatusoutput("ifconfig  | grep ‘inet addr:‘| grep -v ‘127.0.0.1‘ | cut -d: -f2 | awk ‘{ print $1}‘")r_dic = {v:[]}for i in n:    print ‘run task \033[1;36;40m %s \033[0m‘ %i    r = os.popen(i).read().split(‘\n‘)[:-1]    r_dic[v].append(r)    time.sleep(1)result.put(r_dic)print r_dic#處理結束:print ‘worker exit.‘

python 分布式進程體驗

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.