Многопроцессорность и Django DB не работают хорошо.
Я закончил закрытие соединения Django DB первым в новом процессе.
Так что у вас не будет ссылок на соединение, используемое родителем.
from multiprocessing import Pool
multi_core_arg = [[1,2,3], [4,5,6], [7,8,9]]
n_cpu = 4
pool = Pool(n_cpu)
pool.map(_etl_, multi_core_arg)
pool.close()
pool.join()
def _etl_(x):
from django.db import connection
connection.close()
print(x)
ИЛИ
Process.start()
вызывает функцию, которая начинается с
Некоторые другие предлагают использовать
from multiprocessing.dummy import Pool as ThreadPool
It решена моя проблема (2013, потерянное соединение), но поток использует GIL при выполнении ввода-вывода, чтобы освободить его при завершении ввода-вывода.
Сравнительно, Process порождает группу работников, которые обмениваются друг с другом, что может быть медленнее.
Я рекомендую вам время. Боковые подсказки - использовать joblib , который поддерживается проектом scikit-learn. некоторые результаты производительности показывают, что он выполняет собственный пул () .. хотя он оставляет ответственность за кодер, чтобы проверить истинную стоимость времени выполнения.
var a= [ 'Mon. Dec 10, 2018',
'Mon. Feb 11, 2019',
'Tue. Feb 12, 2019',
'Tue. Aug 13, 2019' ]
var b= [ 'MON. DEC 10', 'MON. FEB 11', 'TUE. FEB 12', 'TUE. AUG 13' ]
// Create new array from array a[]
data: string[] =[];
for(i=0;i<a.length;i++){
data[i]=a[i].split(',').shift(); // spliting 'data[]=['Mon. Dec 10']'
}
// Validation
expect(data).equals(b); // To compare the values
Надеюсь, это поможет вам