multiprocessing模块 pipe配合Process
这种是全双工的,当然这里设置为半双工
import time, os
from multiprocessing import Process, Pipe
pread, pwrite = Pipe(False)
def f():
i = 0
while i<10:
# 子进程每次等待,并从管道挤出一次消息,只要有就能取出来,读完了还recv,阻塞了。。。。
time.sleep(1)
data = pread.recv()
print(os.getppid(), 'send', data,'to', os.getpid())
i += 1
p = Process(target=f)
p.start()
i = 0
while i<5:
# 主进程立即、一股脑儿塞到管道里,当然也可以time.sleep(1),一次放一个,这样发送和子进程接收似乎就能同步
pwrite.send(str(i))
print(os.getpid(), 'sent')
i += 1
# 顯send,最後再join
p.join()
os模块 FIFO配合os.fork()
FIFO也被称为有名管道(named pipe),使用mkfifo函数可以创建,是半双工的,参考