/ / Асинхронний імпорт у Python - багатопоточність, python-3.x, асинхронний, python-import, python-multithreading

Асинхронний імпорт в Python - багатопотоковий, python-3.x, асинхронний, python-імпорт, python-multithreading

Мені потрібно імпортувати щось велике іобчислювально дорого, але не потрібно мені це відразу в моєму додатку. Чи є спосіб імпортувати щось асинхронно в python, тобто щось, що потрібно імпортувати, робити у фоновому режимі, поки мій сценарій працює? далеко.

Відповіді:

1 для відповіді № 1

Ви можете викликати імпортера python як функцію в іншому потоці, а не використовувати import foo. Оскільки цей імпорт обчислювально дорогий і python дозволяє запускати лише один потік одночасно (якщо тільки це щось подібне pandas що випускає GIL), ви можете виявити мало користі. Все-таки,

import threading
import time

def begin_load_foo():
global foo_thread
foo_thread = threading.Thread(target=load_foo_thread)
foo_thread.start()

def load_foo_thread():
global foo
print("start importing")
foo = __import__("foo")
print("done importing")

def wait_foo():
print("wait")
foo_thread.join()
print("done")

def do_other_things():
time.sleep(1)

begin_load_foo()
do_other_things()
wait_foo()
foo.bar()