Разделить программу на 47 процессов это конечно очень круто, но не лучше ли иметь один процесс с 47 потоками и единым адресным пространством?
Или питон на столько прост что надо усложнить обмен между кусками кода?
xneoОдни уходят другие приходят. Разделение на процессы делают для повышения живучести и разделения пространства имен и адресов. По мере совершенствования технологий программирования идет медленный переход от процессов к тредам. Хром в этом смысле плывет против течения.
И сразу уходит куча лишних вопросов.
PooHА я подумал, что имеется в виду ядро процессора. Вот и написал, что процесс напрямую с процессором не взаимодействует и что этим занимается операционная система. Когда процесс один, то его потоки нельзя положить на разные ядра процессора, а когда процессов несколько, то они раскладываются по ядрам процессора.
Я имею ввиду всякие файловые дескрипторы, семафоры, объекты GDI и прочая и прочая, они же выделяются процессу и удаляются им или за ним.
The multiprocessing package offers both local and remote concurrency, effectively side-stepping the Global Interpreter Lock by using subprocesses instead of threads. Due to this, the multiprocessing module allows the programmer to fully leverage multiple processors on a given machine. It runs on both Unix and Windows.
JOHN_16Я помню ещё древние Opera и Netscape (предпочитал), где были вкладки, которые грузились независимо от других. То есть во время просмотра одной вкладки не нужно открывать другую, чтобы она загружалась, потому что она загружалась в фоне.
Пользуюсь я ФайрФоксом и на современных “тяжелых” страницах я постоянно наблюдаю картину когда Лиса просто фризится при открытии новой вкладки, на 2-5 секунд.
py.user.nextЩИТО?
То, что Firefox падает, - так они его переписали на Java
py.user.nextЕсли глянуть в исходники, то за исключением упоминаний про андроид список java файлов такой:
они его переписали на Java
linux:/tmp/mozilla-release # find -iname “*.java” | grep -v androidJar архивов столько
./parser/html/javasrc/MetaScanner.java
./parser/html/javasrc/Portability.java
./parser/html/javasrc/AttributeName.java
./parser/html/javasrc/UTF16Buffer.java
./parser/html/javasrc/Tokenizer.java
./parser/html/javasrc/TreeBuilder.java
./parser/html/javasrc/HtmlAttributes.java
./parser/html/javasrc/ElementName.java
./parser/html/javasrc/StateSnapshot.java
./parser/html/javasrc/StackNode.java
./python/mozbuild/mozbuild/test/backend/data/test-manifests-package-tests/not_packaged.java
./build/mobile/robocop/Driver.java
./build/mobile/robocop/RoboCopException.java
./build/mobile/robocop/FennecTalosAssert.java
./build/mobile/robocop/FennecNativeElement.java
./build/mobile/robocop/FennecNativeActions.java
./build/mobile/robocop/Assert.java
./build/mobile/robocop/StructuredLogger.java
./build/mobile/robocop/FennecNativeDriver.java
./build/mobile/robocop/LaunchFennecWithConfigurationActivity.java
./build/mobile/robocop/Element.java
./build/mobile/robocop/RobocopShare2.java
./build/mobile/robocop/Actions.java
./build/mobile/robocop/FennecInstrumentationTestRunner.java
./build/mobile/robocop/PaintedSurface.java
./build/mobile/robocop/RobocopShare1.java
./build/mobile/robocop/FennecMochitestAssert.java
./build/mobile/robocop/RobocopUtils.java
./build/annotationProcessors/utils/AlphabeticAnnotatableEntityComparator.java
./build/annotationProcessors/utils/GeneratableElementIterator.java
./build/annotationProcessors/utils/Utils.java
./build/annotationProcessors/SDKProcessor.java
./build/annotationProcessors/AnnotationInfo.java
./build/annotationProcessors/classloader/AnnotatableEntity.java
./build/annotationProcessors/classloader/JarClassIterator.java
./build/annotationProcessors/classloader/IterableJarLoadingURLClassLoader.java
./build/annotationProcessors/classloader/ClassWithOptions.java
./build/annotationProcessors/AnnotationProcessor.java
./build/annotationProcessors/CodeGenerator.java
linux:/tmp/mozilla-release # find -iname “*.jar” | grep -v android
./modules/libjar/test/unit/data/test_bug370103.jar
./dom/tests/mochitest/whatwg/postMessage.jar
./dom/base/test/file_bug804395.jar
./dom/base/test/file_bug945152.jar
./dom/html/test/bug392567.jar
./dom/security/test/cors/file_CrossSiteXHR_inner.jar
./config/tests/test.manifest.jar
./toolkit/mozapps/extensions/test/addons/test_install4/badaddon.jar
./toolkit/mozapps/extensions/test/addons/test_install4/addon5.jar
./toolkit/mozapps/extensions/test/addons/test_install4/addon7.jar
./toolkit/mozapps/extensions/test/addons/test_chromemanifest_3/inner.jar
./toolkit/components/telemetry/tests/search/searchTest.jar
./toolkit/components/search/tests/xpcshell/data/searchTest.jar
./xpcom/tests/regorder/extension2.jar
./build/mobile/robocop/robotium-solo-4.3.1.jar
./docshell/test/bug369814.jar