test_queue.py 726 B

1234567891011121314151617181920212223242526272829303132
  1. # coding:utf-8
  2. from multiprocessing import Process, Queue
  3. import os
  4. import time
  5. import random
  6. def write(q):
  7. print('Process to write: %s' % os.getpid())
  8. for value in ['A', 'B', 'C']:
  9. print('Put %s to queue...' % value)
  10. q.put(value)
  11. time.sleep(random.random())
  12. def read(q):
  13. print('Process to read: %s' % os.getpid())
  14. while True:
  15. value = q.get(True)
  16. print('Get %s from queue.' % value)
  17. if __name__ == "__main__":
  18. q = Queue()
  19. pw = Process(target=write, args=(q,))
  20. pr = Process(target=read, args=(q,))
  21. pw.start()
  22. pr.start()
  23. pw.join() # 等待pw结束
  24. pr.terminate() # pr进程里是死循环,无法等待其结束,只能强行终止