Мені потрібно імпортувати щось велике іобчислювально дорого, але не потрібно мені це відразу в моєму додатку. Чи є спосіб імпортувати щось асинхронно в 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()