美文网首页
Python-分布式进程

Python-分布式进程

作者: 幽谷听泉 | 来源:发表于2016-10-24 13:20 被阅读0次

在python中Process比Thread更稳定,且Process能分布到多台机器,而Thread只能分布到同一台机器的多个CPU。

Python的multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机器上。
task_master.py
# coding:utf-8

import random,time,queue
from multiprocessing.managers import BaseManager

#发送任务的队列
task_queue = queue.Queue()
#接收任务的队列
result_queue = queue.Queue()

#把两个任务队列在网络上注册
BaseManager.register('get_task_queue',callable=lambda: task_queue)
BaseManager.register('get_result_queue',callable=lambda: result_queue)

#绑定端口5000,设置验证码:8e8b55261098a425273f31a
manager = BaseManager(address=('',5000),authkey=b'8e8b55261098a425273f31a')
#启动队列
manager.start()
# 获取通过网络访问的queue对象:
task = manager.get_task_queue()
result = manager.get_result_queue()

begintime = time.time()
for i in range(50):
    r = random.randint(10001,99999)
    print("Put task %d ..." % r)
    task.put(r)
for i in range(50):
    r = result.get(timeout=10)
    print("Result is %s" % r)

manager.shutdown()
print("master exit.")
endtime = time.time()
print('用时:%0.5f' %(endtime-begintime))
task_worker.py
#task_worker.py
#coding:utf-8
import time,sys,queue
from multiprocessing.managers import BaseManager

#获取网络中的Queue,并注册
BaseManager.register('get_task_queue')
BaseManager.register('get_result_queue')

#连接到manager.py所在机器 server_addr 为远程master服务器的ip地址
server_addr = '127.0.0.1'
print("Connecting to server %s" % server_addr)
m = BaseManager(address=(server_addr,5000),authkey=b'8e8b55261098a425273f31a')
m.connect()

#获取Queue对象
task = m.get_task_queue()
result = m.get_result_queue()

#从task中获取任务,并把结果写入result队列

for i in range(50):
    try:
        n = task.get(timeout=2)
        print('run task %d * %d' %(n,n))
        r = '%d * %d = %d ' % (n, n, n*n)
        time.sleep(1)
        result.put(r)
    except queue.Empty:
        print('Task queue is empty')
#处理结束
print('Worker exit .')

相关文章

  • Python-分布式进程

    在python中Process比Thread更稳定,且Process能分布到多台机器,而Thread只能分布到同一...

  • Python-进程

    Python-多进程 1 创建一个进程 1.1 用 Process 创建一个进程 1.2 进程 Process 介...

  • [Python-进程]

    转自:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348...

  • python-进程线程

    程序:编写完毕的代码,在没有运行的时候,称之为程序。进程:正在运行的代码,就成为进程。 fork():python...

  • python-进程线程

    迭代器、生成器 pdb 多任务概念 进程、程序的概念 多进程修改全局变量 概念:多进程中,每个进程中所有数据(包括...

  • python 分布式进程

    参考链接:分布式进程

  • Zookeeper Watcher机制

    ZooKeeper是用来协调(同步)分布式进程的服务,多个分布式进程通过ZooKeeper提供的API来操作共享的...

  • Python-进程VS线程

    进程和线程 进程之间的通信: q = multiprocessing.Queue()进程池之间的通信: q = m...

  • 《分布式技术原理与算法解析》学习笔记Day15

    分布式计算模式:Actor 什么是Actor模型? 分布式环境下,多个进程协同完成一件复杂的事情,每个进程各司其职...

  • 基于redis的分布式锁

    什么是分布式锁 为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个...

网友评论

      本文标题:Python-分布式进程

      本文链接:https://www.haomeiwen.com/subject/tlcluttx.html