from multiprocessing import Process, Queue
import time, os, random
"""
Process(19436) is writing ...
Process(6720) is writing ...
Put url_1 to queue...
Process(18720) is reading ...
Put url_4 to queue...
get url_1 from queue.
get url_4 from queue.
Put url_5 to queue...
get url_5 from queue.
Put url_2 to queue...
get url_2 from queue.
Put url_3 to queue...
get url_3 from queue.
Put url_6 to queue...
get url_6 from queue.
"""
# 写数据进程
def proc_write(q, urls):
print("Process(%s) is writing ..." % os.getpid())
for url in urls:
q.put(url)
print("Put %s to queue..." % url)
time.sleep(random.random())
# 读数据进程执行的代码
def proc_read(q):
print("Process(%s) is reading ..." % os.getpid())
while True:
url = q.get(True)
print("get %s from queue." % url)
if __name__ == "__main__":
q = Queue()
proc_write1 = Process(target=proc_write, args=(q, ['url_1', 'url_2', 'url_3']))
proc_write2 = Process(target=proc_write, args=(q, ['url_4', 'url_5', 'url_6']))
proc_rader1 = Process(target=proc_read, args=(q,))
proc_write1.start()
proc_write2.start()
proc_rader1.start()
proc_write1.join()
proc_write2.join()
proc_rader1.terminate()
队列通信 通过Queue模块的get和put方法 get和putfrom multiprocessing import Process, Queueimport time, os, random"""Process(19436) is writing ...Process(6720) is writing ...Put url_1 to queue...Process(1872...