1
코딩에 익숙하지 않습니다. Interprocess Communication을 위해 Pipe()를 여러 번 사용할 수 있는지 알고 싶습니다. 그렇다면 다음 코드에서 무엇을 놓치고 있습니까? 그렇지 않다면 한 파이프를 두 번 이상 사용할 수없는 이유는 무엇입니까? 당신은 지금 그것을 파악하지 않은 경우파이썬에서 IPC를 위해 다중 처리. 파이프()를 여러 번 사용할 수 있습니까
import multiprocessing
def f1(pipe):
r, w = pipe
r.close()
for n in range(10):
w.send(n)
def f2(pipe):
r, w = pipe
w.close()
while True:
try:
item = r.recv()
except EOFError:
break
print("Item received by f2:", item)
def f3(pipe):
r, w = pipe
r.close()
for n in range(10, 21):
w.send(n)
def f4(pipe):
r, w = pipe
w.close()
while True:
try:
item = r.recv()
except EOFError:
break
print("Item received by f2:", item)
if __name__ == '__main__':
(r, w) = multiprocessing.Pipe()
p1 = multiprocessing.Process(target=f1, args=((r, w),))
p2 = multiprocessing.Process(target=f2, args=((r, w),))
p1.start()
p2.start()
w.close()
p1.join()
p2.join()
#(r, w) = multiprocessing.Pipe()
p3 = multiprocessing.Process(target=f3, args=((r, w),))
p4 = multiprocessing.Process(target=f4, args=((r, w),))
p3.start()
p4.start()
w.close()
p3.join()
p4.join()