Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

example2.py 1.7 KiB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from threading import Thread
  2. import multiprocessing as mp
  3. import time
  4. import random
  5. from queue import Queue
  6. inputQueue = mp.JoinableQueue()
  7. inputQueue2 = mp.Queue(10)
  8. class ProducerThread(Thread):
  9. def __init__(self,name='producer thread',custom_id=0,daemon=False):
  10. super(ProducerThread, self).__init__()
  11. self.name = "{}-{}".format(name,custom_id)
  12. self.setDaemon(daemon)
  13. #def threadjoin(self):
  14. # super(ProducerThread,self).join()
  15. global inputQueue
  16. def run(self):
  17. numbers = range(10)
  18. counter = 0
  19. while counter < 20:
  20. num = random.choice(numbers)
  21. inputQueue.put(num)
  22. print("\nPut",num)
  23. time.sleep(0.5)
  24. counter+=1
  25. class ConsumerProcess1(mp.Process):
  26. def __init__(self,name='consumer thread',custom_id=0,daemon=False):
  27. super(ConsumerProcess1,self).__init__()
  28. self.name = "{}-{}".format(name,custom_id)
  29. self.daemon = daemon
  30. #def consumerjoin(self):
  31. # super(ConsumerProcess1,self).join()
  32. # return
  33. global inputQueue
  34. def run(self):
  35. while (not inputQueue.empty()):
  36. num = inputQueue.get()
  37. inputQueue.task_done()
  38. print("\nGot", num)
  39. time.sleep(1)
  40. if __name__ == "__main__":
  41. print("this is example 2")
  42. time.sleep(2)
  43. a=ProducerThread(name = 'producer thread',custom_id=1,daemon=False)
  44. b=ConsumerProcess1(name = 'consumer process',custom_id=1,daemon=True)
  45. a.start()
  46. b.start()
  47. print(a.ident,a.name,"\n")
  48. print(b.ident,b.name,"\n")
  49. a.join()
  50. b.join()
  51. print('end of program mark')