Pull to refresh

Comments 10

Применение bogosort здесь не очень удачное, так как в случае параллельного выполнения результат получается случайным по отношению к количеству операций. Раз так «быстро» предлагается сортировать, то лучше что-ли через next_permutation делать, сложность получится та же, O(n!) для n различных значений, но результат уже будет более предсказуемым .

Добрый день!

Буду иметь в виду и опробую библиотеку на предложенной задаче. Спасибо за комментарий.

Только работал с этой библиотекой и тут же статья - прикольно).

Заметил одну проблему, связанную со многопроцессорностью и многопоточностью: все это плохо работает с random и np.random, когда нужно контролировать состояние рандома - результаты будут отличаться от последовательного исполнения, учтите этот момент.

Например, если вы попробуете реализовать бутстрап вручную и распараллелить его выполнение, то состояние рандома на каждом ядре будет сбрасываться в начальную точку, а не продолжаться как при последовательном выполнении и лучше в этом случае сделать обычный генератор.

Ну а вообще, библиотека очень полезная и не зря используется под капотом в sklearn. Хорошо, что появляются статьи про подобные либы на русском языке.

Добрый день!

Классно что вы делитесь своим опытом использования библиотеки, буду иметь ввиду при ей использовании.

Согласен, библиотека мегаполезная.

Спасибо!

Спасибо за статью!

Довольно полезный и наглядный пример с расчетом кластеров в KMeans, но хотелось бы побольше примеров различного использования.

Добрый день!

Спасибо за интерес к посту и подсказку куда в дальнейшем можно развивать исследование возможностей библиотеки.

Доброго дня.

Я использовал вызов в jupytor notebook субпроцесс python файла, с передачей в него аргументов, и уже в нем многопроцессорной обработкой; результат возвращал в ноутбук через stdout.

Более громозко, чем у Вас.

Добрый день!

Интересно было бы посмотреть ваш вариант и сравнит его с моим.

Спасибо за интерес к посту!

# jupyter notebook
result = !python executable/parser.py {path_zip_file} # type: ignore
result = pd.read_json(result[0])
result.info()

# python script
def main():
    path_to_file = Path(argv[1])
    page_list = _open_zip_file(path_to_file)
    result = run_parser(_worker, page_list)
    stdout.write(result.to_json())

if __name__ == '__main__':
    main()

Я немного соврал, оказывается я сохранял файл, а потом просто вызывал скрипт и передавал в него адрес к файлу.

По факту я использовал Pool из библиотеки multiprocessing

Кстати, нашел еще один вариант у себя, использования многопоточности в jupyter notebook.

from multiprocessing.dummy import Pool as ThreadPool
with ThreadPool(30) as pool:
            workreturn = pool.map(_worker, l_b)

Я вообще искал как запустить асинхронность в jupyter, но так и не нашел способа.

Нашел этот вариант, он не сильно проигрывал асинхронному варианту на python. Возможно дело в api к которому я подрубался. В итоге не стал парится оставил такой вариант.

Не могу говорить по поводу скорости в первом варианте, все таки запись и чтение много времени съедает.

НО есть вариант, только я не тестил, так что смотри сам.

В библиотеки pandas есть методы, `read_clipboard()` и `to_clipboard()`, Эти методы позволяют читать и записывать в буфер обмена таблицы данных.

Я на постоянной основе использую его для перекидки таблиц из офиса туда и обратно, бери на заметку.

Sign up to leave a comment.

Articles