Получить доступ к объекту, переданному через процесс, с помощью многопроцессорной обработки id объекта python - PullRequest
0 голосов
/ 04 марта 2020

Я хочу получить свой собственный объект через идентификатор объекта. Я хочу отправить объект в процессор, но когда процессор входит внутрь, появляется другой объект (другой идентификатор). Теперь я хочу получить объект в этом процессе по его идентификатору (разыменование). Я делаю это, но это не работает:

import _ctypes

def di(obj_id):
    """ Inverse of id() function. """
    return _ctypes.PyObj_FromPtr(obj_id)

Но так как это в другом процессе, а данные процессов не являются общий, объект не может быть возвращен. (Я думаю, что это причина)

Вот мой код:

def run_embedded(handler_id, connection_file):
    print(handler_id)
    handler_obj = di(handler_id) #doesn't work

def do(handler_id):
    connection_file = os.path.join(
        tempfile.gettempdir(),
        'connection-{:d}.json'.format(os.getpid()))
    try:
        p = multiprocessing.Process(
            target=run_embedded,
            args=(handler_id, connection_file,),
        )
        p.start()
        p.join()

def main():
    handler = Handler() #I want to get this obj in run_embedde method
    print(id(handler))
    do(id(handler))

if __name__ == "__main__":
    main()

Кто-нибудь знает, что делать, чтобы получить мой объект?

َ Любой ответ будет оценен ! Спасибо'S

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...