Raspberry Pi CPU의 4 코어를 모두 사용할 수 있습니까?


11

프로세스를 더 빠르게 실행할 수 있도록 (예 : 파이썬 계산) CPU의 100 %를 모두 "켜는"간단한 방법이 있는지 궁금합니다.

1) 이것이 가능합니까?

2) 다시 정상으로 되돌릴 수있는 쉬운 방법이 있습니까?

3) 원하는 경우 더 적은 CPU를 사용하는 방법이 있습니까?

다음과 같은 명령 줄 상호 작용을 생각하고 있습니다.

pi@raspberry:~ $ sudo turnOnFourCores python run.py


1
짧은 대답은 아니오입니다
스티브로 빌라 드

16
긴 대답은 "그것이 간단하다면 기본값 일 것입니다"
Shadow

18
귀하의 의견은 모두 오해의 소지가되고, 파이 4 개 코어를 가지고 있지만 오직 1. 더 나은 대답은 모두 4 개 개의 코어가 있다는 것입니다 사용하는 것을 의미 할 수 ARE 이미하지만, 파이썬 (그리고 그 문제에 대한 모든 다른 프로그램은)에만 사용하는 것이 더 멀티 스레드가 아닌 한 1 코어 이상. 전역 인터프리터 잠금으로 인해 멀티 스레딩에서도 단일 코어를 사용하여 Python을 효과적으로 고칠 수는 있지만이 질문의 범위를 약간 벗어났습니다.
Sohcahtoa82

13
분명히하기 위해 OP는 멀티 코어 CPU의 작동 방식을 오해하고 있으며 귀하의 답변은 오해를 강화합니다.
Sohcahtoa82

6
파이썬 프로그램을 더 빠르게 만드는 가장 쉬운 방법은 컴파일 된 언어로 다시 작성하는 것입니다 (또는 적어도 시간이 중요한 작업은 ac 모듈을 사용하도록합니다).
Milliways

답변:


21

기본적으로 모든 컴퓨터는 가능한 경우 모든 코어를 사용하려고합니다. 그러나 응용 프로그램이 다중 스레드 인 경우에만이를 수행 할 수 있습니다. 그렇지 않은 경우 (즉, threading모듈을 사용하지 않는 Python 스크립트 ) 최대 하나의 코어 만 사용할 수 있습니다. 이는 4 코어 CPU에서 CPU의 25 %에 해당합니다. 여러 코어를 사용하도록 스크립트를 수정하려면 계산을 여러 부분으로 나누고 Python 문서에 표시된대로 멀티 스레드 할 수 있습니다 .

최신 정보:

Anon이 대답 했듯이 Python의 GIL (Global Interpreter Lock)을 사용하지 않으면 작동하지 않습니다. 이를 통해 작업을 동시에 (겉보기에) 수행 할 수 있지만 여러 코어에서 코드를 실행할 수는 없습니다. C로 작성된 모듈 (예 : numpy) 을 사용하는 경우 여러 코어를 사용하여 해당 제한을 극복 할 수 있습니다 . 또한, 이것이 옵션이 아닌 경우, Python은 multiprocessing을 제공 하여 여러 코어에서 모든 작업을 실행할 수 있습니다.


올바른 업데이트-왜 파이썬의 답변의 첫 부분이 잘못되었는지 설명합니다. 모듈 C 또는 일부 컴파일 된 언어를 작성하여 파이썬의 이러한 한계를 극복하면 더 이상 파이썬을 전혀 쓰지 않습니다. 성능이 중요하다면 컴파일 된 언어로가는 것이 정답입니다. (멀티 프로세싱은 자원 사용 관점에서 동일 하지 않습니다 .)
Brick

4
@Brick 분명히 말해서, 컴파일 된 언어는 확실히 적절한 in-process 멀티 스레딩을위한 요구 사항은 아닙니다. 물론 파이썬의 GIL조차도 구현 세부 사항입니다 (일반적인 CPython에 부여). 자이 썬과 아이언 파이썬과 같이 행복하게 멀티 스레드되는 다른 파이썬 인터프리터가 있습니다.

4
혼란에 더하여 파이썬 컴파일됩니다; CPython의 경우 CPython VM에서 실행되는 CPython 바이트 코드로 컴파일됩니다. Jython의 경우 JVM에서 실행되는 Java 바이트 코드로 컴파일됩니다. 마지막으로 IronPython은 .NET 런타임을 대상으로하는 CIL로 컴파일합니다. 따라서 성능을 위해 "컴파일 된 언어로가는" 것은 실제로 의미가 없습니다.)
marcelm

모든 컴퓨터는 가능할 때 모든 코어를 사용하려고합니다. 실제로는 그렇지 않을 때 모든 코어를 사용하거나 다른 작업을 수행 합니다 . 이러한 차이는 명백하거나 경험이 많은 사람들에게도 도움이 될 수 있지만 OP가 자동으로 발생하지 않는다는 것을 OP가 알아야 할 것처럼 들립니다.
nekomatic

13

프로세스를 더 빠르게 실행할 수 있도록 (예 : 파이썬 계산) CPU의 100 %를 모두 "켜는"간단한 방법이 있는지 궁금합니다.

당신이 암시하고 있다고 생각한다는 의미는 아닙니다. 이것은 pi에만 해당되는 문제가 아니며 논리적 제약이기도합니다.

컴퓨터 자체는 현재 단일 스레드 로 실행되는 프로세스 를 병렬로 실행할 수 있는지 결정할 수있는 용량이 충분하지 않습니다 . 이 용량을 가질 수있는 시점에서는 컴퓨터 프로그래머가 필요하지 않습니다.이 작업을 수행 할 수있는 컴퓨터 시스템은 자체 코드 1을 작성할 수도 있기 때문 입니다.

다음과 같은 간단한 수학 표현을 고려하십시오.

(4 + 2) * 17 / (3 + 6)

병렬로 계산할 가능성이 있지만 논리적으로 제한되어 있습니다. 나는 두 개 이상의 스레드에 아무런 의미가 없다고 말하고 심지어는 하나만 될 것입니다.

#1 a) 4 + 2 b) 6 * 17 c) 102 / 9
#2 a) 3 + 6

스레드 # 2는 스레드 # 1에 의해 단계 C에서 사용 된 3 + 6 = 9를 계산하여 한 단계 절약함으로써 기여했습니다. 그러나 그것은 병렬 처리가 유용하게 도달하는 한입니다. 스레드 # 2 17 / 9를 계산할 있지만 # 1이 6 * 17을 수행하는 동안, 다시 수행 할 수없는 동일한 목표에 대한 두 개의 다른 경로가 있으므로 그렇게하는 것은 의미가 없습니다. 즉, # 2는 계속 작동 할 수 있습니다.

b) 17 / 9 c) 1.888 * 6

스레드 # 1 (11.333)과 동일한 결과로 끝나지만 A 단계 이후에는 서로 도움이되지 않았으므로이 목표를 추구하는 것은 시간 낭비입니다.

(이 예제는 문자 그대로가 아니라 논리적 인 원리를 보여주기위한 것입니다. 사용자 코드에서 작업이 스레드되는 규모는 훨씬 크지 만 멀티 스레드 프로그래밍에 대한 실질적인 교훈은 필요하지 않습니다. 여기에서 아이디어를 파악하십시오.)

여러 프로세서를 악용하려면 코드를 작성해야합니다. 단순히 아무 것도 가져 가서 "오 4 코어를 모두 사용하고 더 빨리해라!"라고 말할 수는 없습니다. 그것은 일어날 일이 아닙니다. 논리적으로, 많은 (.. 또는 대부분) 문제와 작업은 병렬로 발생할 수없는 단계와 관련 이 있으며 순서대로 발생해야합니다.


1. 그러나 아래의 Felix Dombek의 의견을보십시오. 저는 AI 전문가가 아닙니다. Peter Corde의 의견에 따르면, OS에서 현대적인 명령어 세트와 프로세서를 활용하여 매우 세밀하게 정리 된 것을 병렬 방식으로 최적화 할 수 있으며, 하드웨어 파이프 라인 은 코어를 통하지 않더라도이를 수행합니다. core는 하나 이상의 작업이 진행 중이며 최종 실행 전에 다양한 지점에서 명령 스트림에서 작동합니다. 나는 그것이 당신이 얻는 것보다 다소 적은 것으로 생각하면서 여기에서 사용자 스레드 주제를 고수하려고했습니다.


4
나는 많은 병렬 숫자 코드를 작성했으며 세부 사항에 대해서는 약간 오도합니다. 이와 같은 개별 산술 연산 수준에서는 병렬화하지 않습니다. (Raspberry Pi 이상으로 확장하는 경우 일부 컴파일러 및 프로세서는 이미 스레딩 구조 외부에서도 일부를 병렬화합니다.) 전체 작업을 더 큰 청크로 병렬화합니다.
벽돌

4
@Brick "이러한 개별 산술 연산 수준에서는 병렬화하지 않습니다." 물론 그렇지는 않지만, 이것이 멀티 스레드 프로그래밍에 대한 교훈이 아니라 유추
goldilocks

4
예제로 사용하는 계산의 병렬 처리는 현지화되어이를 계산하는 프로그램에서 명령 레벨 병렬 처리 를 작성 하며, 비 순차 실행 CPU 는 자체적으로 해당 병렬 처리를 이용할 수 있습니다 .
Peter Cordes

2
RPi3는 순서가 2 인 수퍼 스칼라 en.wikipedia.org/wiki/ARM_Cortex-A53 을 사용하므로주의해서 명령을 예약하면 컴파일러가 두 개의 add명령을 나란히 배치하여 ILP를 계속 활용할 수 있으므로 두 명령을 모두 동일하게 실행할 수 있습니다 클럭 사이클. 그러나 다음 곱하기 및 나누기 나머지는 데이터 종속성에 따라 직렬화됩니다.
Peter Cordes

1
병렬화 가능한 부품을 결정하는 데 반드시 강력한 AI가 필요한 것은 아닙니다. "일반적인"의미에서; 그러나 컴퓨터가 대부분의 실제 사례에서 작동하는 휴리스틱 접근법을 사용할 수 있다는 것은 쉽게 상상할 수 있습니다. 마찬가지로, 컴퓨터는 페르마의 마지막 정리를 증명하지는 못했지만 확실히 증명 된 프로그램이 있습니다. 프로그래밍 언어를위한 최신 컴파일러는 이미 최적화 단계의 일부로 많은 코드 재 배열을 수행합니다. 여기에는 병렬화 가능한 부분에 대한 추론이 포함됩니다.
Felix Dombek

7

파이썬에는 없습니다.

다른 사람들은 스레딩을 보라고 제안합니다. 스레딩은 대부분의 언어에 대한 올바른 대답이지만 파이썬을 사용하고 있다고 설명하지 않았습니다.

파이썬 GIL 에서는 여러 코어를 효과적으로 사용할 수 없습니다.


4
GIL 을 사용하면 4 개의 코어를 모두 사용 하기약간 더 어려워 집니다. 결코 불가능하거나 심지어 그처럼 어려운 일이 아닙니다.
가짜 이름

5

다중 코어를 사용하려면 스레드 수준 병렬 처리 를 OS에 명시 적으로 노출해야하며 , 일반적으로 프로그래머는 다중 스레드 프로그램을 작성해야합니다. (또는로 컴파일하는 것과 같이 다른 입력에서 단일 스레드 프로그램을 여러 번 실행하려면 make -j4)

그러나 일부 언어의 컴파일러는 자동 병렬화를 지원합니다. 예를 들어 OpenMP를 사용하는 C 또는 C ++는 일반 for()루프를 여러 스레드를 시작하는 프로그램으로 컴파일 할 수 있습니다 .

#pragma omp parallel for
for(int i = 0; i < 1000000; ++i)
{
   A[i] = B[i] * constant + C[i];
}

그러나 여전히 이것은 프로그램을 작성하거나 컴파일 할 때 발생해야합니다. 현재 하드웨어 및 OS가 다중 코어를 사용하여 단일 스레드 프로그램의 속도를 높일 수있는 방법이 없습니다.


관련 : 단일 스레드는 여러 코어에서 어떻게 실행됩니까? : 답변 : 그렇지 않습니다. 그러나 단일 CPU 코어가 한 번에 하나의 명령보다 빠르게 단일 스레드를 실행하기 위해 찾아서 이용하는 명령 수준 병렬 처리와 같은 다른 종류의 병렬 처리 가 있습니다.

이 질문에 대한 나의 대답은 최신 CPU가 세분화 된 명령 수준 병렬 처리 방법을 찾고 활용하는 방법에 대한 세부 사항 중 일부에 있습니다. (대부분 x86에 중점을 둡니다). 이는 여러 개의 명령어를 한 번에 실행하여 일반 CPU가 작동하는 방식의 일부일 뿐이며 특별히 활성화 할 필요는 없습니다. (프로그램을 실행하는 동안 CPU가 실행하는 클럭 당 명령 수 또는 기타 측정 값을 확인할 수있는 성능 카운터가 있습니다.)

RPi3은 순서대로 ARM Cortex-A53 CPU 코어를 사용 합니다. 각 코어는 2 와이드 수퍼 스칼라 (ILP가 허용하는 한 클럭 당 2 개의 명령)이지만 더 많은 명령 수준 병렬 처리를 찾고 대기 시간을 숨기기 위해 명령을 재정렬 할 수 없습니다.

여전히 CPU는 파이프 라인이므로 파이프 라인 끝에서 페치 및 디코딩에서 라이트 백 단계까지의 총 명령 수는 중요합니다. 데이터 종속성이 제한을 두지 않는 경우 CPU가 작업중인 각 파이프 라인 단계에 2 개의 명령어가있을 수 있으며 클럭 당 2 개의 명령어 처리량이 있습니다. (2 와이드의 의미입니다.)

명령을 순서대로 실행할 수는 없지만주의해서 명령을 정렬하면 (보통 컴파일러에서) 출력을 준비하기 위해 여러주기가 걸리는 명령의 대기 시간을 숨길 수 있습니다. (예 : 캐시에 부딪 치거나로드가 여러 번 발생하더라도로드가 다음 사이클에 대비되는 추가 대 여러 사이클이 소요됨). 비결은 asm 명령어를 주문하여 결과를 생성하는 명령어와이를 사용하는 명령어 사이에 여러 개의 독립적 명령어가 있도록하는 것입니다.

소프트웨어 (컴파일러)가 명령을 정적으로 예약하는 것은 프로그램 순서대로 실행되는 환상을 유지하면서 내부적으로 재정렬 할 수있는 하드웨어를 갖는 것보다 취하기 쉽습니다. 캐시 미스는 예측할 수 없기 때문에 컴파일러가 명령 순서를 변경하는 작은 비 순차적 창처럼 훌륭한 작업을 수행하는 것은 매우 어렵고 컴파일 타임에 함수 호출에서 종속성 체인을 분석하기가 어렵습니다. 또한 레지스터 수는 하드웨어 레지스터 이름 변경없이 제한됩니다.


이 모든 것이 코드가 원하는 것보다 느리게 실행될 때 작은 편안함입니다. 물론 Cortex-A53에는 후드 아래에 멋진 것들이 많이 있지만 Cortex-A57 에는 후드 아래에 더 멋진 것들이 있습니다 (시계 당 최대 3 개의 명령을 순서대로 실행하는 것과 같이). Skylake와 같은 큰 x86 CPU (클럭 속도 차이는 말할 것도 없습니다).

Cortex-A53은 컴퓨터 아키텍처 수업에서 배우게 될 독창적 인 MIPS와 같은 https://en.wikipedia.org/wiki/Classic_RISC_pipeline 과 비교할 때 매우 환상적 이지만 현대 표준으로는 매우 저렴합니다.


1
"현재 하드웨어 및 OS가 다중 코어를 사용하여 단일 스레드 프로그램의 속도를 높일 수있는 방법이 없습니다." 엄격하게 사실이 아닙니다. 예를 들어, 단일 스레드 Java 프로그램에서 Java는 추가 CPU 코어에서 모든 GC 및 런타임 분석 / 컴파일을 수행 할 수 있습니다. 런타임 분석은 "단일 스레드"에 대한 비용을 들이지 않고 실행중인 코드 경로를 기반으로 최적화를 결정하고 분석에서 학습 한 내용에 따라 속도를 크게 높일 수 있기 때문에 큰 문제입니다. 일반적으로 당신의 요점은 좋은 것입니다.
Bill K

@BillK 공정하게, 그 맥락에서 "프로그램"입니다 java, 아니 myapp.jar, 그것은 확실히 단일 스레드 없습니다.
goldilocks

1
사실, 단일 쓰레드 일지라도 런타임이 어떻게 "쓰기 코드"를 설계했는지에 따라 멀티 스레드 앱으로 명시 적으로 코딩하지 않고도 추가 코어를 활용할 수 있다고 지적했습니다. 파이썬은 더 강력한 런타임도 제공 할 수 있지만 무의미합니다. 어쨌든 큰 점프는 아닙니다 .Java조차도 단일 스레드 응용 프로그램을 돕기 위해 여분의 1/2 코어처럼 사용한다고 생각합니다.
Bill K

" 현재 하드웨어 및 OS가 다중 코어를 사용하여 단일 스레드 프로그램의 속도를 높일 수있는 방법이 없습니다. "직후 하드웨어가 명령어를 병렬로 실행하는 방법을 설명합니다.
토마스 웰러

3
@ThomasWeller 네,하지만 까다로운 프로세서 파이프 라이닝은 다중 코어를 사용하지 않습니다. 하나의 코어에 포함되어 있지만 여러 명령 스트림에서 작업 할 수 있습니다. 즉, 그것은 이다 병렬 형태,하지만 하지 멀티 코어 스레딩의 한 형태.
goldilocks

4

이것은 CPU가 작동하는 방식이 아닙니다.

현재로서는 CPU가 섭씨 80도 이상의 온도 관련 문제로 인해 조절되지 않는 것으로 가정하여 100 % 사용량으로 완벽하게 실행할 수 있습니다. 즉, 일반적으로 CPU가 100 %로 멈춰있는 것을보고 싶지 않습니다. 일상적으로 CPU 사용률이 100 % 인 경우 프로세서가 처리하기에 너무 많은 것 같습니다. 이로 인해 말더듬이 발생하고 일반적으로 불행한 사용자 경험이 발생합니다.

보다 실제적인 것과 비교하면 CPU 사용률은 자동차와 매우 비슷합니다. 차는 100mph를 주행 할 수 있지만 속도계가 그 아래에서 무언가를 크게 읽을 가능성이 높습니다. 시내에있을 때, 약 25mph를 절대로 얻지 못할 수도 있습니다. 그러나 차가 100mph를 갈 수 있다는 것은 변하지 않습니다. 가속기를 너무 세게 밀지 않았습니다.

RPi가 더 많은 일을하게한다면 (가속기를 더 많이 누르십시오), CPU 사용률 수치가 올라갑니다. 예를 들어, yes터미널 창에서 명령을 실행할 때 CPU 사용률을보십시오 ( ctrl+c터미널 명령 을 종료하는 것을 기억하십시오 ). 이렇게하면 4 개의 CPU 코어 중 하나를 최대로 사용하므로 CPU가 25 % 증가합니다.


5
이 답변은 일반적으로 CPU가 100 % 사용률로 실행되는 것을 원하지 않는 곳에서 오해의 소지가 있다고 생각합니다. 기계 (또는 기계)를 계산 전용으로 사용했기 때문에 100 % 활용률을 원하는 숫자로 집중된 많은 응용 프로그램이 있습니다. 진정한 슈퍼 컴퓨터 시간을 얻으 려면 코드가이 작업을 수행하기에 충분히 최적화되었음을 증명 해야합니다. 그렇지 않으면 리소스 낭비로 인해 사용자가 거부됩니다. Pi 클러스터가 있다면 분명히 슈퍼 컴퓨터 성능을 얻지 못하지만 사용을 극대화하는 것이 더 중요 할 수 있습니다!
벽돌

3
나는 프로세서가 25 %에 있다면 가스를 절약하거나 제한 속도를 준수해야합니다. 일반적으로 어떤 작업이 I / O를 기다리는 중이기 때문에 더 명확하게하고 싶을 수도 있습니다. 단일 코어를 완벽하게 실행할 수있는 것. 이로 인해 사용자 인터페이스가 방해받지 않는 것은 시간이 많이 걸리지 만 실제로는 작은 단일 코어 시스템을 잼하기가 여전히 쉽습니다.
goldilocks

100 % CPU 사용률은 일반적으로 UX를 저하시키지 않습니다. 대부분의 프로그램이 CPU에 의해 제한되지 않고 다른 요인에 의해 1000 %로 충분할 수 있습니다. 극단적 인 CPU로드로 인해 속도가 느려지는 유일한 프로그램은 실제로 항상 CPU를 사용하는 프로그램입니다.
Oskar Skog

4

다른 답변은 자세하게 설명되어 있지만 귀하의 질문을 구체적으로 다루지는 않습니다.

  1. 예, 프로그램 (및 운영 체제)이 여러 코어를 설명하도록 프로그래밍 된 경우 ( '스레딩'은 여기서 프로그래밍의 용어입니다)
  2. 기계는 작업을 완료하기 위해 필요한만큼 각 코어를 사용합니다. 따라서 아무것도 변경할 필요가 없습니다.
  3. 당신은 할 수 있습니다 최대 사용에 대한 제한을 설정하지만, 정상적인 사용에 대한 필요가 없습니다. 여기에 답변을보십시오 :-https: //unix.stackexchange.com/questions/151883/limiting-processes-to-not-exceed-more-than-10-of-cpu-usage

NB :

전체적으로 파이의 성능을 향상시키려는 경우 오버 클럭킹을 살펴볼 수 있습니다. 이렇게하면 CPU가 더 빠른 속도로 실행됩니다. 단점은 열 생산 증가, 프로세서 수명 단축 및 전력 소비 증가입니다.


2

가능한 경우 스크립트를 매개 변수화하고 별도의 Python 프로세스에서 실행합니다. 예를 들면 다음과 같습니다.

cat parameters.txt | xargs -n1 -P4 python run.py

다른 대안은 이미 언급 한 멀티 프로세싱 라이브러리로, 파이썬 프로세스를 포크 앤 조인 할 수 있습니다. 그러나 계산을 실행하려는 매개 변수 목록 (예 : 파일 이름)도 있어야합니다.


첫 번째 부분 : 그렇습니다. 당면한 문제를 전제로하는 것은 당혹 스럽습니다 .
피터 Mortensen

Ahaa 사실, 나는 멀티 프로세싱의 프로세싱 풀에만 익숙 map했지만 분명히 매우 정교한 공유 메모리 구성도 가지고 있습니다.
NikoNyrh


0

RPI를 테스트하려는 경우 여기서stress같이 실행 하면 CPU가 어떻게 사용되는지 확인할 수 있습니다 . 이는 전원이 충분한 지 확인할 수 있고 RPI가 너무 많은 전류 (암페어)를 사용하려고 시도하고 종료 될 경우 전원이 충분한 지 확인할 수 있기 때문에 유용합니다.htop

반면에, 파이썬 스크립팅을 사용하려면 joblib프로세스를 병렬화 할 때 어떤 것이 잘 작동 하는지 확인해야 하므로 원하는 프로세서 수를 사용하게됩니다.


0

이 모든 대답은 다른 방식으로 옳지 만 운영 체제는 자동으로 다른 코어를 사용하여 부하를 분산시키는 것이 사실입니다. 간단한 파이썬 프로그램 (temp.py say)으로 이것을 볼 수 있습니다

while True:
  x = 1.0

RPi 데스크탑에서 터미널을 열고 $ top프로세서 작동을 보여주는 유형 을 입력하십시오 . 그런 다음 다른 터미널을 열면 python3 temp.pypython3 작업이 100 % 프로세서 시간으로 증가하는 것을 볼 수 있습니다. 그런 다음 다른 터미널을 열고 프로세스를 반복하고 400 %까지 어떻게 이동하는지 확인하십시오. 따라서 @Shadow가 언급 한 것처럼 한 수준에서 간단하고 기본값입니다. 그러나 다른 사람들이 설명했듯이 병렬 처리를 사용할 수있는 프로그램을 설계하는 것은 쉽지 않습니다.


0

대답은 그렇습니다! 프로그램을 작성하여 인식하고 사용하기 만하면됩니다. 이를 수행하는 프로그램은 코어를 사용할 수 있습니다. Java 로이 작업을 수행 할 수 있도록 작성했습니다.

파이썬 개발자의 위 답변은이 답변의 개념이 매우 제한되어 있으므로 매우 혼란 스러울 수 있지만 대답은 YES이며 YES입니다!


자세히 설명해 주시겠습니까?
SDsolar

0

OP가 그의 질문에 파이썬을 지정하지 않았기 때문에 Raspberry Pi에서 잘 작동하고 동시성을 사용하는 매우 쉬운 방법이있는 두 가지 더 현대적인 언어를 제안하고 싶습니다.

내가 가장 좋아하는 언어는 Rust 언어입니다. Pi에 프로그램을 작성하고 컴파일했습니다. Rust는 많은 유형의 포인터 및 경쟁 조건 버그를 방지하여 동시 코드를 더 쉽고 안전하게 작성할 수 있다는 점에서 훌륭합니다. Rust는 시스템 프로그래밍 언어를위한 것이지만 C가 할 수있는 모든 것을 할 수 있습니다.

이러한 다른 언어는 Go입니다 (검색하기 쉽도록 Golang이라고도 함). Go는 Google 팀에서 만들었으며 상당히 성숙한 언어입니다. Go에서 코 루틴을 만드는 것은 쉬운데,이를 "Go routines"라고 부릅니다.

이 두 언어는 모두 Raspberry Pi, 심지어 Pi Zero에서도 코드를 컴파일 할 수 있습니다. 그러나 둘 다 큰 프로그램에 적합한 빠른 컴퓨터에서 크로스 컴파일 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.