Перед рассмотрением кода:
Очищают objs и exes, и позволяют ему восстановить вещь. Наблюдайте за любым ручным взаимодействием (делает оно создает через, "делают" одними или есть ли некоторая включенная игра).
Еще лучше: дайте ему явное (просто купленный) машина, позвольте ему продемонстрировать контроль и восстановите. Тогда посмотрите, как приложение запускается и подходит (какие-либо секретные опции ввести?).
Тогда: на парном сеансе программирования добавьте одну или две опции к системе и посмотрите, где и как они реализованы.
Вышеупомянутое может звучать глупым, но я видел проекты, где одно только здание было кошмаром, и большое знание было в мозгу разработчика только. Наличие доверяемой среды сборки и необходимость выяснить, как восстановить, являются кошмаром.
Вот примерно то, что я сделал:
# Producer
from multiprocessing.reduction import reduce_connection
from multiprocessing import Pipe
# Producer and Consumer share the Queue we call queue
def handle(queue):
reader, writer = Pipe()
pickled_writer = pickle.dumps(reduce_connection(writer))
queue.put(pickled_writer)
и
# Consumer
from multiprocessing.reduction import rebuild_connection
def wait_for_request():
pickled_write = queue.get(block=True) # block=True isn't necessary, of course
upw = pickle.loads(pickled_writer) # unpickled writer
writer = upw[0](upw[1][0],upw[1][1],upw[1][2])
Последняя строка загадочна и исходит из следующего:
>>> upw
(<function rebuild_connection at 0x1005df140>,
(('/var/folders/.../pymp-VhT3wX/listener-FKMB0W',
17, False), True, True))
Надежда, что помогает кому-то другому. У меня работает нормально.