python 分布式进程通信

简介: task_master.txttask_worker.txt 点击(此处)折叠或打开 #!/usr/bin/env python3 #-*- coding:utf-8 -*- ...
img_e25d4fb2f8de1caf41a735ec53088516.pngtask_master.txt
img_e25d4fb2f8de1caf41a735ec53088516.pngtask_worker.txt

点击(此处)折叠或打开

  1. #!/usr/bin/env python3
  2. #-*- coding:utf-8 -*-
  3. '''
  4. '''
  5. import time,random,queue
  6. from multiprocessing.managers import BaseManager

  7. task_queue = queue.Queue()
  8. result_queue = queue.Queue()

  9. class QueueManager(BaseManager):
  10.     pass

  11. QueueManager.register('get_task_queue', callable=lambda: task_queue)
  12. QueueManager.register('get_result_queue', callable=lambda: result_queue)

  13. manager = QueueManager(address=('', 5000), authkey=b'talen')
  14. manager.start()
  15. task = manager.get_task_queue()
  16. result = manager.get_result_queue()
  17. for i in range(10):
  18.     n = random.randint(0,9000)
  19.     print('Put task %d' % n)
  20.     task.put(n)
  21. for i in range(10):
  22.     r=result.get(timeout=10)
  23.     print("Result : %s " % r)
  24. manager.shutdown()

  25. print('master exit.')


点击(此处)折叠或打开

  1. #!/usr/bin/env python3
  2. #-*- coding:utf-8 -*-
  3. '''
  4. '''


  5. import time, queue, sys
  6. from multiprocessing.managers import BaseManager
  7. class QueueManger(BaseManager):
  8.     pass
  9. QueueManger.register('get_task_queue')
  10. QueueManger.register('get_result_queue')
  11. server_addr='127.0.0.1'
  12. print('Connect to server %s '% server_addr)
  13. m=QueueManger(address=(server_addr,5000), authkey=b'talen')
  14. m.connect()
  15. task=m.get_task_queue()
  16. result=m.get_result_queue()
  17. for i in range(10):
  18.     try:
  19.         n=task.get(timeout=1)
  20.         print('run task %d * %d ...' %(n,n))
  21.         r='%d * %d = %d' % (n,n,n*n)
  22.         time.sleep(1)
  23.         result.put(r)
  24.     except Queue.Empty:
  25.         print('task queue is empty')
  26. print('worker exit.')
t@localhost untitled$ python3 task_master.py 
Put task 6811
Put task 5164
Put task 8492
Put task 177
Put task 5496
Put task 8724
Put task 6422
Put task 2887
Put task 287
Put task 876
Result : 6811 * 6811 = 46389721 
Result : 5164 * 5164 = 26666896 
Result : 8492 * 8492 = 72114064 
Result : 177 * 177 = 31329 
Result : 5496 * 5496 = 30206016 
Result : 8724 * 8724 = 76108176 
Result : 6422 * 6422 = 41242084 
Result : 2887 * 2887 = 8334769 
Result : 287 * 287 = 82369 
Result : 876 * 876 = 767376 
master exit.
t@localhost untitled$ 
t@localhost untitled$ python3 task_worker.py 
Connect to server 127.0.0.1 
run task 6811 * 6811 ...
run task 5164 * 5164 ...
run task 8492 * 8492 ...
run task 177 * 177 ...
run task 5496 * 5496 ...
run task 8724 * 8724 ...
run task 6422 * 6422 ...
run task 2887 * 2887 ...
run task 287 * 287 ...
run task 876 * 876 ...
worker exit.
t@localhost untitled$ 




参考学习:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431929340191970154d52b9d484b88a7b343708fcc60000#0
目录
相关文章
|
15天前
|
负载均衡 Java 调度
探索Python的并发编程:线程与进程的比较与应用
本文旨在深入探讨Python中的并发编程,重点比较线程与进程的异同、适用场景及实现方法。通过分析GIL对线程并发的影响,以及进程间通信的成本,我们将揭示何时选择线程或进程更为合理。同时,文章将提供实用的代码示例,帮助读者更好地理解并运用这些概念,以提升多任务处理的效率和性能。
|
1天前
|
数据采集 消息中间件 Python
Python爬虫-进程间通信
Python爬虫-进程间通信
|
24天前
|
监控 Ubuntu API
Python脚本监控Ubuntu系统进程内存的实现方式
通过这种方法,我们可以很容易地监控Ubuntu系统中进程的内存使用情况,对于性能分析和资源管理具有很大的帮助。这只是 `psutil`库功能的冰山一角,`psutil`还能够提供更多关于系统和进程的详细信息,强烈推荐进一步探索这个强大的库。
31 1
|
10天前
|
数据采集 Linux 调度
Python之多线程与多进程
Python之多线程与多进程
19 0
|
15天前
|
存储 算法 Java
关于python3的一些理解(装饰器、垃圾回收、进程线程协程、全局解释器锁等)
该文章深入探讨了Python3中的多个重要概念,包括装饰器的工作原理、垃圾回收机制、进程与线程的区别及全局解释器锁(GIL)的影响等,并提供了详细的解释与示例代码。
15 0
|
15天前
|
调度 Python
python3多进程实战(python3经典编程案例)
该文章提供了Python3中使用多进程的实战案例,展示了如何通过Python的标准库`multiprocessing`来创建和管理进程,以实现并发任务的执行。
36 0
|
18天前
|
并行计算 API 调度
探索Python中的并发编程:线程与进程的对比分析
【9月更文挑战第21天】本文深入探讨了Python中并发编程的核心概念,通过直观的代码示例和清晰的逻辑推理,引导读者理解线程与进程在解决并发问题时的不同应用场景。我们将从基础理论出发,逐步过渡到实际案例分析,旨在揭示Python并发模型的内在机制,并比较它们在执行效率、资源占用和适用场景方面的差异。文章不仅适合初学者构建并发编程的基础认识,同时也为有经验的开发者提供深度思考的视角。
|
5月前
|
Python
【Python30天速成计划】10.异步以及多进程和多线程
【Python30天速成计划】10.异步以及多进程和多线程