Производительность threading.Thread python [duplicate]

2017 ответ: теперь вы можете делать то, что хотите, в каждом текущем браузере и узле

. Это довольно просто:

  • Вернуть обещание
  • Используйте 'await' , в котором JavaScript ожидает, что обещание будет разрешено в vlue (например, hTTP-ответ)
  • Добавьте 'async' для родительской функции

Вот рабочая версия вашего кода:

(async function(){

var response = await superagent.get('...')
console.log(response)

})()

ожидание поддерживается во всех текущих браузерах и узлах 8 [/ д2]

5
задан Martijn Pieters 8 November 2013 в 18:44
поделиться

2 ответа

  1. Python имеет GIL. Байт-код Python будет выполняться только одним процессором за раз. Только некоторые C-модули (которые не управляют состоянием Python) смогут работать одновременно.
  2. Python GIL имеет огромные накладные расходы при блокировке состояния между потоками. Есть исправления для этого в более новых версиях или в ветвях разработки, которые, по крайней мере, должны делать многопоточный код с привязкой к ЦП так же быстро, как однопоточный код.

Вам нужно использовать мульти -process для параллелизации с Python. К счастью, модуль multiprocessing , который поставляется с Python, делает это довольно легко.

Очень немногие языки могут автоматически распараллеливать выражения. Если это необходимая функциональность, я предлагаю Haskell (Data Parallel Haskell)

9
ответ дан Yann Ramin 5 September 2018 в 08:10
поделиться

Проблема в функции random () Если вы удалите случайный код из вашего кода. Оба ядра пытаются получить доступ к общему состоянию случайной функции. Ядра работают последовательно и тратят много времени на синхронизацию кешей. Такое поведение известно как ложное разделение. Прочтите эту статью False Sharing

1
ответ дан Andrew 5 September 2018 в 08:10
поделиться
Другие вопросы по тегам:

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