РЕДАКТИРОВАТЬ: я сохранил решение потоков ниже для вашей справки. Однако это решение должно решить проблему Python GIL. Я проверил это и вижу, что файлы были успешно записаны:
from multiprocessing import Pool
import pandas as pd
# original data:
data = pd.DataFrame([
[ 1, 2, 3, 4,],
[ 1, 2, 3, 4,],
[ 1, 2, 3, 4,],
[ 1, 2, 3, 4,],
[ 1, 2, 3, 4,],
])
def SaveDataToCsv(data):
print('Started export to .csv')
data.to_csv('data.csv')
print('Finished export to .csv')
def SaveDataToParquet(data):
print('Started export to .parquet')
data.to_parquet('data.parquet')
print('Finished export to .parquet')
# multiprocessing method:
pool = Pool(processes=2)
process1 = pool.apply_async(SaveDataToCsv, [data])
process2 = pool.apply_async(SaveDataToParquet, [data])
Протестировал библиотеку threading
, и, похоже, она работает нормально:
import pandas as pd
import threading
# original data:
data = pd.DataFrame([
[ 1, 2, 3, 4,],
[ 1, 2, 3, 4,],
[ 1, 2, 3, 4,],
[ 1, 2, 3, 4,],
[ 1, 2, 3, 4,],
])
def SaveDataToCsv(data):
data.to_csv('data.csv')
def SaveDataToParquet(data):
data.to_parquet('data.parquet')
thread1 = threading.Thread(target=SaveDataToCsv, args=(data,))
thread2 = threading.Thread(target=SaveDataToParquet, args=(data,))
thread1.start()
thread2.start()