multiprocessing
на python?duplex
должен быть равен True
для двунаправленного обмена, а кода как это должно выглядеть нету. Предполагаю, что необходимо в функцию foo
добавить обработчик сообщений как в конце кода, вот только у меня как-то криво работает, код не завершает работу.import time, random
from multiprocessing import Process, Pipe, current_process
from multiprocessing.connection import wait
def foo(w):
for i in range(10):
w.send((i, current_process().name))
w.close()
if __name__ == '__main__':
readers = []
for i in range(4):
r, w = Pipe(duplex=False)
readers.append(r)
p = Process(target=foo, args=(w,))
p.start()
w.close()
while readers:
for r in wait(readers):
try:
msg = r.recv()
except EOFError:
readers.remove(r)
else:
print(msg)
import time, random
from multiprocessing import Process, Pipe, current_process
from multiprocessing.connection import wait
def foo(w, i):
readers2 = []
readers2.append(w)
w.send((i, "Child"))
while readers2:
for r2 in wait(readers2):
try:
msg = r2.recv()
except EOFError:
readers2.remove(r2)
else:
print("Child: " + msg)
w.close()
if __name__ == '__main__':
readers = []
for i in range(1):
r, w = Pipe(duplex=True)
readers.append(r)
p = Process(target=foo, args=(w,i))
p.start()
w.close()
while readers:
for r in wait(readers):
try:
msg = r.recv()
r.send("test_1")
r.send("test_2")
except EOFError:
readers.remove(r)
else:
print(msg)
r.close()