Ниже приведен простой фрагмент кода, демонстрирующий проблему.
from multiprocessing import Pipe
import time
recv_end, send_end = Pipe(duplex=False)
d = {'word'+str(elem): elem for elem in range(3000)}
start_time = time.time()
send_end.send(d)
print('--- %s seconds ---' % (time.time()-start_time))
Вышеописанное работает нормально и достаточно быстро для моих целей, никаких проблем нет. Но если я сделаю размер до 5000, он просто висит бесконечно:
from multiprocessing import Pipe
import time
recv_end, send_end = Pipe(duplex=False)
d = {'word'+str(elem): elem for elem in range(5000)} # changed to 5000
start_time = time.time()
send_end.send(d)
print('--- %s seconds ---' % (time.time()-start_time))
Есть ли ограничение на размер трубы или это невоспроизводимая проблема? Как насчет того, чтобы сделать размер еще больше? И если есть ограничение по размеру, каков наилучший способ избежать этой проблемы и отправить через большой словарь через Pipe? Заранее спасибо!