Вы можете сделать это:
import threading
def thread_function(df):
df.to_csv()
def blue_function(df):
thread = threading.Thread(target=thread_function, args=(df,))
thread.start()
Из документа не нужно вызывать thread.join()
, чтобы дождаться его завершения, так как:
основной потокне поток демона, и поэтому все потоки, созданные в основном потоке, по умолчанию имеют значение daemon = False.Вся программа Python завершается, когда не осталось живых потоков, не являющихся демонами.
РЕДАКТИРОВАТЬ:
При этом вы создаете новый Thread для вашего процесса.Это позволяет ОС самостоятельно планировать время выполнения процедур.Преимущество этого состоит в том, что одному потоку не нужно ждать завершения другого.Таким образом, делая ваш код асинхронным , а не параллельным.
В других языках программирования он также позволяет ОС планировать потоки для запуска на разных ядрах ЦП, заставляя их работать параллельно.Это, однако, невозможно в Python из-за GIL , который блокирует запуск Python более чем одного экземпляра Interpreter одновременно.
Вы можете начать новый процесс вместо потокаОднако это только увеличит накладные расходы (время и память) и не даст никаких преимуществ.Chrome порождает процессы вместо потоков для вкладок браузера, но это происходит из соображений безопасности.Поскольку процессы не разделяют динамическую память.
Если вам действительно требуется параллельное выполнение задач, единственным вариантом является кодирование потоковой части в C и , вызываемых из Python.