进程间通信
-*- coding:utf-8 -
import os
from multiprocessing import Queue
from multiprocessing import Process
def sub_message(q):
while True:
print(q.get())
def add_message(q):
for i in range(5):
q.put(i)
print("%s添加了消息%s" % (os.getpid(), i))
def main():
q = Queue(3)
print(q.qsize())
pid1 = Process(target=add_message, args=(q,))
pid2 = Process(target=sub_message, args=(q,))
pid1.start()
pid2.start()
pid1.join()
pid2.join()
if __name__ == "__main__":
main()
进程池间通信
import os
from multiprocessing import Queue
from multiprocessing.pool import Pool
from multiprocessing import Manager
import time
def write(q, num):
for temp in ["hello", "world", "python", "-end-"]:
q.put(temp)
print("任务%d,进程为%s,,添加了%s" % (num, os.getpid(), temp))
time.sleep(1)
def read(q, num):
while True:
msg = q.get()
if msg == "-end-":
print("获取信息即将结束")
break
print("任务%d,进程%s获得了信息%s" % (num, os.getpid(), msg))
time.sleep(1)
def main():
q = Manager().Queue(5)
print(q.qsize())
po = Pool(4)
for i in range(3):
po.apply_async(write, args=(q, i))
po.apply_async(read, args=(q, i))
po.close()
po.join()
if __name__ == "__main__":
main()