Ответ 1
Потоки рассола полностью автономны, и поэтому рассыпание будет разбрасывать по одному объекту за раз.
Поэтому, чтобы разблокировать несколько потоков, вы должны повторно распечатывать файл до тех пор, пока не получите EOFError:
>>> f=open('a.p', 'wb')
>>> pickle.dump({1:2}, f)
>>> pickle.dump({3:4}, f)
>>> f.close()
>>>
>>> f=open('a.p', 'rb')
>>> pickle.load(f)
{1: 2}
>>> pickle.load(f)
{3: 4}
>>> pickle.load(f)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
EOFError
поэтому ваш код без клавиатуры может выглядеть так:
import pickle
objs = []
while 1:
try:
objs.append(pickle.load(f))
except EOFError:
break