LINUX.ORG.RU

Правильно ли я понимаю, что в JavaScript есть многопоточность,

 ,


0

3

а в Python её практически нет из-за GIL ?

на странице https://www.ecma-international.org/ecma-262/9.0/ написано:

ECMAScript 2017 introduced Async Functions, Shared Memory, and Atomics ... that allows multi-agent programs to communicate using atomic operations that ensure a well-defined execution order even on parallel CPUs.
...
An agent comprises a set of ECMAScript execution contexts, an execution context stack, a running execution context, a set of named job queues, an Agent Record, and an executing thread.

В питоне она есть для IO-bound операций. Так как GIL менеджит только выполнение питоновского кода. Для CPU-bound верно.

Shtsh ★★★★ ()
Последнее исправление: Shtsh (всего исправлений: 1)
Ответ на: комментарий от crutch_master

HTML5 is bringing us true multi-threading capability via Web Workers. These little fellas are ideal for running scripts in background threads, so that they don't interfere with the user interface (UI).

They are supported as of Opera 10.6, Safari 4.0, Chrome 11.0, Firefox 4.0

Einstok_Fair ★★☆ ()
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от Einstok_Fair

Ну технически тебе никто не мешает молотить циферки в воркере, а в основном потоке рисовать UI и ходить за данными. А в ноду вроде завезли нормальный IPC.

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Einstok_Fair

Неправильно поняли. В вашей цитате многопоточность не записана, не подразумевается, и это хорошо. Иначе нашлись бы желающие программировать ещё хуже. Вот один желающий уже нашёлся:

выкинуть этот Python и больше никогда не видеть.

Partisan ★★★ ()
Ответ на: комментарий от Deleted

это полностью независимый поток, не шарящий данные с основным.

У жаваскриптеров и понятие треда какое-то своё уличное. Мы, старперы, называем такую фигню процессом.

bread ()
Ответ на: комментарий от crutch_master

JS модно хэйтить. Хотя я бы предпочел пилить UI либо на clojure, либо на scala.js. Либо нормальная функциональщина, либо нормальные типы. Но один фиг rich web applications спасет только wasm и взрослые языки.

Deleted ()

Есть WebWorker'ы. Они есть как в браузере, так и в ноде. Есть передача владения типизированных массивов между воркерами, без копирования.

javascript ()
Ответ на: комментарий от Einstok_Fair

Если речь про браузер, то из воркеров нет доступа к DOM API. Есть экспериментальный Offscreen Canvas API, который сейчас поддерживается только фаерфоксом и частично хромом. При этом доступ к webgl с помощью него из воркера, есть только в фаерфоксе под флагом.

https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas
https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/transferCo...

javascript ()
Ответ на: комментарий от Einstok_Fair

From version 44: this feature is behind the gfx.offscreencanvas.enabled preference. To change preferences in Firefox, visit about:config.

javascript ()
Ответ на: комментарий от Shtsh

Для CPU-bound верно.

Нет так. Нельзя Python C API без захваченного GIL не дёргать, остальное может выполняться параллельно. Numpy этой фичей активно пользуется, например.

oldstable ()
Ответ на: комментарий от Deleted

Но один фиг rich web applications спасет только wasm и взрослые языки.

А они нужны, rich web applications? Променять зоопарк ОС на зоопарк кастратов «браузер как ОС»? Уж лучше плюсы с кутями или свалить на пенсию, чем такое «повышение уровня абстракции над железом»...

yyk ★★★★★ ()
Ответ на: комментарий от crutch_master

Есть часть обработки данных, которые я бы с радостью выгрузил на клиент, но не хочу раскрывать используемые алгоритмы\построение результирующих данных в виде JS кода, ибо нормально обфусцированный JS в v8 очень плохо оптимизируется.

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)

В js тоже gil, если говорить про nodejs и прочие интерпретаторы. А вот если встраивать - то как сделаешь. Например, если взять мозиловскую либу, то там довольно легко по потокам раскидать, но контекстами самому рулить придётся, иначе - тот же gil.

pon4ik ★★★★★ ()
Ответ на: комментарий от yyk

Так кто мне зарплату платит, тот и музыку заказывает. Плюс в бэкэнде есть самописные алгоритмы заказчика которыми он дорожит и не готов отдавать их в виде кода на фронт/в виде коробки, плюс есть вещи которые написаны по документам полученным под NDA.

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)

нет и не скоро появится

q13 ()
Ответ на: комментарий от Einstok_Fair

ты наверное хотел сказать «взять python и выкинуть высер пьяной макаки такой как js»?

foozzi ★★★ ()
Ответ на: комментарий от Deleted

Нельзя дёргать, «не» лишняя. Опечатался, а испраить не мог, скор не тот.

oldstable ()
Ответ на: комментарий от Einstok_Fair

То есть, ты уже вызывал WebGL из основного треда, понял чем конкретно тебя это не устраивает, и осталось только вызвать его из вебворкера :) ?

Vit ★★★★★ ()
Ответ на: комментарий от Einstok_Fair

Так это хорошо. Ты не сможешь повесить браузер намертво.

crutch_master ★★★★★ ()

если только воркеры, но это не потоки, а параллельное выполнение еще одного JS-файла

Ford_Focus ★★★★★ ()
Ответ на: комментарий от crutch_master

Чем тебе не нравится js? Норм язык же, для некоторых дел.

Тем, что он как питон, только хуже. Стандартная библиотека - говно. В репах тонны мусора, npm тормозит, node_modules жрёт иноды. Тридцать три разных версии язычка и пойди пойми где уже можно писать import, а где ещё нужно require. А в остальном тупо как питон со скобочками. Так нафига его тащить из браузера?

anonymous ()
Ответ на: комментарий от Ford_Focus

там нет многопоточности https://www.mail-archive.com/emscripten-discuss@googlegroups.com/msg07008.html ее выключили

но даже когда она была-она была на «одно ядро прцессора»(по сути также как в джаваскрипте)

и да последнее обновление хрома 69 более чем в 2 раза убил производительность WASM о чем все молчат

missxu ()
Ответ на: комментарий от Einstok_Fair

хотелось бы про JavaScript примеров. Ну, чтобы выкинуть этот Python и больше никогда не видеть.

зачем тебе это все когда есть java?

пиши серверные приложения на java, и клиентский гуй на джаваскрипте, все так делают

missxu ()
Ответ на: комментарий от missxu

Да тс тролляка, сталкивает два скриптовых язычка в их слабых местах, неужели не виден жЫр? Ему надо было ещё Golang приплести с фразой типа «Может, мне на Go перейти, там из каробки многопоточность, но язык дубовый и вакансий мало».

menangen ★★★★★ ()

Не путай язык и реализацию.

Legioner ★★★★★ ()
Ответ на: комментарий от Einstok_Fair

Ты в курсе что без бенчмарков с разговорами про скорость посылают на три буквы? У тебя есть хоть какие-то метрики или ты просто фанбойских статеек в интернете обчитался?

Vit ★★★★★ ()
Ответ на: комментарий от Einstok_Fair

хотелось бы про JavaScript примеров. Ну, чтобы выкинуть этот Python и больше никогда не видеть.

Лучше выкинуть JS. Hint ты можешь подключить к питону числодробилку на условных крестах, там где это нужно.

peregrine ★★★★★ ()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от missxu

так я и не говорю, что всё готово и можно переходить уже сейчас

моя ссылка говорит, что её нужно включать аж тремя флагами

но wasm обязательно придёт в production и в нем будет многопоток, другое мозилу не устроит

Ford_Focus ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.