Что на самом деле делает multiprocessing.pool?

Чтобы получить все ваши входы формы, в том числе type = "file" , вам нужно использовать объект FormData . вы сможете увидеть содержимое formData в отладчике -> network -> Headers после того, как вы отправите форму.

var url = "YOUR_URL";

var form = $('#YOUR_FORM_ID')[0];
var formData = new FormData(form);


$.ajax(url, {
    method: 'post',
    processData: false,
    contentType: false,
    data: formData
}).done(function(data){
    if (data.success){ 
        alert("Files uploaded");
    } else {
        alert("Error while uploading the files");
    }
}).fail(function(data){
    console.log(data);
    alert("Error while uploading the files");
});
0
задан Student04 23 March 2019 в 04:53
поделиться

1 ответ

Pool.map, по сути, передает общую многопроцессорную очередь, из которой извлекаются все рабочие процессы. Каждый работник выполняет бесконечный (или фиксированную итерацию, если установлено maxtasksperchild) цикл, который:

  1. Пытается вытащить задачу из очереди (блокируется, если ни одна не доступна)
  2. Обрабатывается задача
  3. Отправка результата обратно родителю
  4. Перейти к 1

Он не пытается вытащить новую задачу, пока старая не будет завершена, поэтому если один работник получает дешевые задания, он будет выполнять больше; ни один работник не сидит без дела, пока задачи остаются доступными. Так что да, он делает именно то, что вы хотите; это не какой-то циклический перебор или другая статическая схема распределения работы, которая может оставить рабочих без работы, в то время как другие перегружены несколькими ожидающими задачами. Установка chunksize может создать этот эффект, но в этом случае больше о каждом «чанке», считающемся как отдельная задача; куски затем распределяются по требованию, а не по отдельным задачам.

0
ответ дан ShadowRanger 23 March 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: