Обновить
0
0

Пользователь

Отправить сообщение
# 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()`, Эти методы позволяют читать и записывать в буфер обмена таблицы данных.

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

Доброго дня.

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

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Аналитик по данным, Ученый по данным
Стажёр
От 70 000 ₽
Python
SQL
MySQL