По умолчанию bash поддерживает совместимое с csh
историческое расширение.
В bash
echo #!
будет печатать только новую строку, так как #
начинает комментарий.
В
echo "#!"
#
является частью строки, начинающейся с "
. Такие строки все еще проверяются bash для специальных символов. !
является специальным символом, если за ним следует любой другой текст.
-bash: !": event not found
В этом случае bash ожидает, что токен !"
ссылается на предыдущую команду в истории оболочки, начиная с "
, и не находит его. Все это само по себе !
не вызывает такого поведения:
$ echo \# !
# !
$ echo fee ! fie
fee ! fie
Наконец,
$ echo !echo
создает две строки, первая строка выводится оболочкой, чтобы показать, как шаблон выше расширяется до:
echo echo '# !'
, тогда как вторая строка является результатом выполнения расширенной команды: echo #!
См. также: Страница пользователя Bash в История Расширение
Я не полностью уверен, который проблема, которую Вы хотите так, решает, но если Вы развернете свое python/django приложение через апачское предварительное ветвление, то MPM, использующий mod_python апач, запустит несколько рабочих процессов для того, чтобы обработать различные запросы.
, Если одному запросу нужно так много ресурсы, что Вы хотите использовать несколько ядер, взглянули на pyprocessing. Но я не думаю, что это было бы мудро.
'Стандартный' способ сделать это с направляющими должно выполнить "пакет" экземпляров Полукровки (т.е.: 4 копии приложения направляющих), и затем используют апача или nginx или некоторую другую часть программного обеспечения для нахождения перед ними и действием как подсистема балансировки нагрузки.
Это, вероятно, как это сделано с другими рубиновыми платформами, такими как merb и т.д., но я не использовал тех лично.
ОС будет заботиться о выполнении каждой полукровки на своем собственном ЦП.
, Если Вы устанавливаете mod_rails иначе phusion пассажир , он запустит и остановит несколько копий процесса направляющих для Вас также, таким образом, он закончит тем, что распределил нагрузку через несколько центральных процессоров/ядер похожим способом.
Используйте интерфейс, который выполняет каждый ответ в отдельном интерпретаторе, такой как mod_wsgi
для Python. Это позволяет многопоточности использоваться, не встречаясь с GIL.
РЕДАКТИРОВАНИЕ: По-видимому, mod_wsgi
больше поддержки несколько интерпретаторов для каждого процесса, потому что идиоты не могли выяснить, как правильно реализовать дополнительные модули. Это все еще поддерживает рабочие запросы в отдельном FastCGI-стиле процессов, тем не менее, таким образом, это - по-видимому, текущее принятое решение.
В Python и Ruby только возможно использовать несколько ядер, должен породить новые (тяжелые) процессы. Дубликаты Java наследовали возможности платформы Java. Вы могли подразумевать потоки Java использования. Это - например, причина, почему иногда (часто) Сервер JAVA-приложения как Glassfish используется для приложений Ruby on Rails.
Для Python проект PyProcessing позволяет, Вы к программе с процессами во многом как Вы использовали бы потоки. Это включено в стандартную библиотеку недавно выпущенных 2,6 версий как multiprocessing
. Модуль имеет много функций установления и управления доступом к структурам совместно используемых данных (очереди, каналы, и т.д.) и поддержка общих идиом (т.е. менеджеры и объединения рабочего).