Разница в параллельной обработке между Java и Python - PullRequest
0 голосов
/ 26 июня 2018

Я делаю программу параллельной обработки, используя java.util.concurrent.ForkJoinPool. Продолжая эту программу, я проверил top и htop и заметил, что в top есть только один процесс Java, но в htop есть много процессов.

Мой старший пишет программу параллельной обработки с использованием python, и он говорит, что странно, что в top есть только один процесс. А также он говорит, что «загрузка процессора» в top обычно превышает 90%. Но моя программа использует только около 68%.

Я думал, что причина в разнице в том, как реализовать параллельную обработку между Java и Python. Но я не знаю, правильно ли это. Пожалуйста, сообщите мне правильную причину этой разницы.

Спасибо.

1 Ответ

0 голосов
/ 26 июня 2018

Ваш старший разработал многопоточность или многопоточность в Python? Чтобы увидеть разницу, посмотрите на Многопроцессорность и многопоточность Python

Я почти уверен, что он выполняет многопроцессорную обработку, которая порождает несколько процессов, которые являются настоящими копиями, а не потоками с общей памятью. Поведение top / htop является правильным. top показывает только процессы, а htop также показывает потоки.

Разница будет в том, что вы используете многопоточность, а ваш старший, похоже, использует многопроцессорность, также объясняет разную загрузку ЦП.

Вы можете нажать H в htop, что переключит представление пользовательских потоков. Теперь он должен быть почти таким же, как в верхней части.

...