介绍
使用python怎么实现分布式编程?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
#, task_master.py import 随机,时间、队列 得到multiprocessing.managers import  BaseManager #,发送任务的队列: 时间=task_queue queue.Queue () #,接收结果的队列: 时间=result_queue queue.Queue () #,从BaseManager继承的QueueManager: class QueueManager (BaseManager): ,通过 #,把两个队列都注册到网络上,,可调用的参数关联了队列对象: QueueManager.register (& # 39; get_task_queue& # 39;,,可调用=λ:,task_queue) QueueManager.register (& # 39; get_result_queue& # 39;,,可调用=λ:,result_queue) 5000 #,绑定端口,设置验证码& # 39;abc # 39;: 时间=manager QueueManager(地址=(& # 39;& # 39;,,5000),,authkey=b # 39; abc # 39;) #,启动队列: manager.start () #,获得通过网络访问的队列对象: 时间=task manager.get_task_queue () 时间=result manager.get_result_queue () #,放几个任务进去: for 小姐:拷贝范围(10): 时间=n 才能;random.randint (0, 10000) 打印才能(& # 39;Put task % d…& # 39;, %, n) task.put才能(n) #,从结果队列读取结果: 打印(& # 39;Try get 结果…& # 39;) for 小姐:拷贝范围(10): 时间=r 才能;result.get(超时=10) 打印才能(& # 39;结果:,% & # 39;,%,r) #,关闭: manager.shutdown () 打印(& # 39;master 自营出口# 39;)
#, task_worker.py import 时间,sys,队列 得到multiprocessing.managers import  BaseManager #,创建类似的QueueManager: class QueueManager (BaseManager): ,通过 #,由于这个QueueManager只从网络上获取队列,所以注册时只提供名字: QueueManager.register (& # 39; get_task_queue& # 39;) QueueManager.register (& # 39; get_result_queue& # 39;) #,连接到服务器,也就是运行task_master.py的机器: 时间=server_addr & # 39; 127.0.0.1 # 39; 打印(& # 39;Connect 用server % s……& # 39;, %, server_addr) #,端口和验证码注意保持与task_master.py设置的完全一致: m =, QueueManager(地址=(server_addr, 5000), authkey=b # 39; abc # 39;) #,从网络连接: m.connect () #,获取队列的对象: 时间=task m.get_task_queue () 时间=result m.get_result_queue () #,从任务队列取任务,并把结果写入队结果列: for 小姐:拷贝范围(10): 尝试才能: ,,,n =, task.get(超时=1) ,,,print (& # 39; run  task % d *, % d…& # 39;, %, (n, n)) ,,,r =, & # 39; % d *, % d =, % d # 39;, %, (n, n, n * n) ,,,time . sleep (1) ,,,result.put(右) except 才能;Queue.Empty: ,,,print (& # 39; task  queue is 空# 39;公司) #,处理结束: 印刷(& # 39;worker 自营出口# 39;)
看完上述内容,你们掌握使用python怎么实现分布式编程的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!