Python получает список из вызываемого файла Python

В task2.py Я выполняю файл Python, как это:

text = os.system("python new_image.py  --image_file " + "/home/roots/" + str(nc) + ".jpg --num_top_predictions 1")

Основные линии new_image.py выглядит как

def main(_):
    maybe_download_and_extract()
    image = (FLAGS.image_file if FLAGS.image_file else
            os.path.join(FLAGS.model_dir, 'cropped_panda.jpg'))
    score = run_inference_on_image(image)
    return score


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument(
        '--model_dir',
        type=str,
        default='/tmp/imagenet',
        help="""\
        Path to classify_image_graph_def.pb,
        imagenet_synset_to_human_label_map.txt, and
        imagenet_2012_challenge_label_map_proto.pbtxt.\
        """
    )
    parser.add_argument(
        '--image_file',
        type=str,
        default='',
        help='Absolute path to image file.'
    )
    parser.add_argument(
        '--num_top_predictions',
        type=int,
        default=5,
        help='Display this many predictions.'
    )
    FLAGS, unparsed = parser.parse_known_args()
    tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)

Я модифицировал classify_image.py в тензорных моделях имагенет такой, что run_inference_on_image() возвращает список. Я хотел бы получить этот список в task2.py, Как я это сделаю?

1 ответ

Самый простой способ - сохранить список как временный pickle файл в new_image.pyи загрузить pickle файл в task2.py, т.е.

# In new_image.py
import pickle
picklefile = open('temp.pkl', 'wb')

# Dump list to the pickle file
pickle.dump(listvariable, picklefile)
picklefile.close()

А также,

# In task2.py
import pickle 
picklefile = open('temp.pkl', 'rb')
newlist_variable = pickle.load(picklefile)
picklefile.close()

Я не знаю, есть ли способ разделить динамические переменные между двумя процессами Python. Но если есть, я бы хотел знать!

Другие вопросы по тегам