Raspberry Pi'nin CPU'sunun 4 çekirdeğini de kullanabilir miyim?


11

İşlemleri daha hızlı (python hesaplamaları gibi) çalıştırabilmek için CPU'nun% 100'ünü "açmanın" basit bir yolu olup olmadığını merak ediyordum.

1) Bu mümkün mü?

2) Normale dönmenin kolay bir yolu var mı?

3) İsterseniz daha az CPU kullanmanın bir yolu var mı?

Gibi bir komut satırı etkileşimi düşünüyorum:

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


1
Kısa cevap Hayır
Steve Robillard

16
Uzun cevap "Eğer bu kadar basit olsaydı, varsayılan olurdu"
Gölge

18
Yorumlarınızın Hem yanıltıcı ve Pi 4 çekirdeğe sahip ama sadece hiç 1. Daha iyi bir cevap dört çekirdek olmasıdır kullandığı anlamına gelebilir OLAN zaten, ama Python (ve bu konuda herhangi bir başka program) sadece kullanacağını daha çoklu iş parçacıkları olmadıkça 1 çekirdekten daha fazla. Python, küresel yorumlayıcı kilidi nedeniyle çoklu iş parçacıklarıyla bile tek bir çekirdek kullanarak etkili bir şekilde sıkışabilir, ancak bu, bu sorunun kapsamının biraz ötesindedir.
Sohcahtoa82

13
Açıklığa kavuşturmak için, OP'nin çok çekirdekli CPU'ların nasıl çalıştığını yanlış anladığını ve yanıtlarınızın sadece yanlış anlamalarını güçlendirdiğini düşünüyorum.
Sohcahtoa82

6
Bir Python programını daha hızlı hale getirmenin en kolay yolu, derlenmiş bir dilde yeniden yazmak (veya en azından kritik görevlerin ac modülünü kullanma süresini yapmak).
Milliways

Yanıtlar:


21

Varsayılan olarak, herhangi bir bilgisayar mümkün olduğunda tüm çekirdeklerini kullanmaya çalışır. Ancak bunu ancak bir uygulama çok iş parçacıklı olduğunda elde edebilir. Değilse (yani threadingmodülü kullanmayan bir Python betiği ), yalnızca en fazla bir çekirdeği kullanabilir. Bu, dört çekirdekli bir CPU'daki CPU'nun% 25'ine eşittir. Komut dosyanızı birden fazla çekirdek kullanacak şekilde değiştirmek isterseniz, hesaplamanızı birden çok parçaya bölebilir ve Python belgelerinde gösterildiği gibi çok iş parçacıklı hale getirebilirsiniz .

Güncelleme:

As Anon cevap verdi , bu Python'un GIL (Küresel Tercüman Kilidi) ile çalışmadan işe başarısız olur. Bu, görevlerin aynı anda (görünüşte) çalışmasına izin verir, ancak kodun birden fazla çekirdekte çalışmasına izin vermez. C (örn. Numpy) ile yazılmış modüller kullanıyorsanız, bu sınırlamanın üstesinden gelmek için birden fazla çekirdek kullanmanıza izin verebilirler . Ayrıca, bu bir seçenek değilse, Python herhangi bir görevi birden çok çekirdek üzerinde çalıştırmanıza izin veren çoklu işlem sunar .


Doğru olan güncelleme, cevabın ilk bölümünün Python ile ilgili neden yanlış olduğunu açıklıyor. Python'un bu sınırlamasını sadece C modülleri veya derlenmiş bir dil yazarak aşabilirsiniz, bu noktada artık Python'u gerçekten yazmıyorsunuz. Performans kritikse, derlenmiş bir dile gitmek doğru cevaptır. (Çoklu işlem, kaynak kullanımı açısından aynı değildir .)
Brick

4
@Brick Açıkça söylemek gerekirse, derlenmiş bir dil, uygun süreç içi çoklu kullanım için kesinlikle bir gereklilik değildir. Heck, Python'un GIL bile bir uygulama detayıdır (popüler CPython için verilir) - Jython ve IronPython gibi mutlu bir şekilde çok yönlü olacak başka Python tercümanları vardır.
Bob

4
Karışıklığa ek Python edilir derlenmiş; CPython durumunda, CPython VM'sinde çalıştırılan CPython bayt kodunu derler. Jython için, JVM'de çalıştırılan Java bayt koduna derlenir. Son olarak, IronPython .NET çalışma zamanını hedefleyen CIL'e derlenir. Yani, performans için "derlenmiş bir dile gitmek" gerçekten mantıklı değil;)
marcelm

herhangi bir bilgisayar mümkün olduğunca tüm çekirdeklerini kullanmaya çalışacaktır. Gerçekten değil, sadece söylendiğinde tüm çekirdeklerini kullanacak (ya da başka bir şey yapacak) . Bu ayrım deneyimli ya da hatta deneyimli gibi görünebilir, ancak OP'nin otomatik olarak gerçekleşmediğini takdir etmesi gerekiyor gibi görünüyor.
nekomatic

13

İşlemleri daha hızlı (python hesaplamaları gibi) çalıştırabilmek için CPU'nun% 100'ünü "açmanın" basit bir yolu olup olmadığını merak ediyordum.

Söylediğini sanmıyorum. Bu, pi'ye özgü bir sorun değil, mantıklı bir kısıtlamadır.

Bilgisayarların tek başına, tek bir iş parçacığı olarak çalışan bir işlemin bunun yerine paralel olarak çalıştırılabileceğini belirleme kapasitesi çok fazla değildir . Bu yapabileceğini bir bilgisayar sistemi de kendi kod yazmak çünkü onlar bu kapasiteye sahip olabilir noktada, bilgisayar programcıları için gerek olacağını Not 1. .

Aşağıdaki basit matematik ifadesini düşünün:

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

Bunun paralel olarak hesaplanması için bazı potansiyeller vardır, ancak mantıksal olarak sınırlıdır. Ben ikiden fazla iş parçacığının bir anlamı olmadığını söyleyebilirim ve o zaman bile çoğunlukla sadece bir tane olacak:

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

İplik # 2, C adımında 1 numaralı iş parçacığı tarafından kullanılan 3 + 6 = 9 hesaplanarak bir adım kaydedilerek katkıda bulunmuştur. Ancak bu, paralelliğin yararlı bir şekilde buraya gelebileceği kadar. İplik 2. ederken olabilir şimdi birleştirilemeyeceğini aynı hedefe iki farklı yollara sahip çünkü 1., o anlamsız olacağını yapıyor, * 17 6 yapıyor iken 17/9 hesaplayın. Yani, # 2 çalışmaya devam edebilir:

b) 17 / 9 c) 1.888 * 6

Ve sonuçta 1 numaralı iplikle (11.333) aynı sonuç elde edilir, ancak A adımının ötesinde birbirlerine yardımcı olmamışlardır, bu nedenle ikisinin bu hedefe ulaşması zaman kaybıdır.

(Bu örneğin değişmez bir örnek olmadığını unutmayın; mantıksal bir ilke göstermeyi amaçlamaktadır. Kullanıcı kodunda görevlerin işlendiği ölçek çok daha büyüktür, ancak çok iş parçacıklı programlamada gerçek bir derse ihtiyacınız yoktur. fikri buradan kavrayın.)

Birden çok işlemci kullanmak için, bunun için yazılmış kod gerekir. Basitçe hiçbir şey alıp "4 çekirdeğin tamamını kullanın ve daha hızlı yapın!" Diyemezsiniz. Bu olmayacaktı. Mantıken, (..ya çoğu) sorunları ve görevlerin bir sürü adımları içerir edemez paralel olarak gerçekleşmesi, bunlar sırasıyla gerçekleşmesi gerekir.


1. Fakat Felix Dombek'in aşağıdaki yorumuna bakınız; Yapay zeka konusunda uzman değilim. Peter Corde'nin açıklamalarına göre, çağdaş talimat setleri ve işlemcilerin çok ince taneli şeyleri paralel bir şekilde optimize etmek için işletim sistemi tarafından kullanılabileceğini ve donanım boru hatlarının bunu çekirdekler arasında olmasa da (tek bir core, devam etmeden önce çeşitli noktalarda talimat akışında çalışan birden fazla şey var). Ben az ya da çok ne almak olduğunu düşünüyorum gibi burada kullanıcı konuları konusuna sopa çalışıyordu.


4
Çok sayıda paralel sayısal kod yazdım ve bu ayrıntılara göre biraz yanıltıcı. Bunun gibi bireysel aritmetik işlemler düzeyinde paralellik yapmazsınız. (Raspberry Pi'nin ötesine geçersek, bazı dengeleyiciler ve işlemciler zaten diş açma yapılarının dışında bile bunlardan bazılarını zaten paralelleştireceklerdir.) Tüm görevleri daha büyük parçalar halinde paralelleştiriyorsunuz.
Tuğla

4
@Brick "Bunun gibi bireysel aritmetik işlemler düzeyinde paralel değilsiniz." -> Tabii ki yapmıyorsunuz, ancak bunun bir analoji
goldilocks

4
Eğer Örnek olarak kullanmak hesaplamasında paralellik yüzden yaratacağı lokalize edilmektedir talimat düzey paralellik dışı sipariş yürütme ile hesaplamamakta onu ve CPU'lar bir programda olabilir kendi başlarına bu paralelliği istismar.
Peter Cordes

2
RPi3 bir in-sipariş 2 çapında superscalar kullanan en.wikipedia.org/wiki/ARM_Cortex-A53 bir derleyici hala iki koyarak İLP istismar edebilir dikkatli talimat zamanlama ile, yani addaynı hem çalıştırmak, böylece yan yana talimatları saat çevrimi. Ancak, aşağıdaki çarpma ve bölme geri kalanı, belirttiğiniz gibi, veri bağımlılıkları ile serileştirilecektir.
Peter Cordes

1
Paralelleştirilebilir parçaların belirlenmesi mutlaka güçlü bir AI gerektirmez. "Genel" anlamda, olabilir; ancak bilgisayarların çoğunlukla birçok pratik durumda işe yarayan bazı sezgisel yaklaşımı kullanabileceği kolayca düşünülebilir. Bir bilgisayar, Fermat'ın son teoremini kanıtlamadı, ancak kesinlikle teorem kanıtlayıcı programlar var. Programlama dilleri için modern derleyicilerin, optimizasyon adımlarının bir parçası olarak zaten paralelleştirilebilir parçalar üzerinde muhakeme içeren çok sayıda kod yeniden düzenlemesi yaptığını unutmayın.
Felix Dombek

7

Python için hayır.

Diğer insanlar, çoğu dil için geçerli bir cevap olan diş açmaya bakmanızı önerir, ancak python kullandığınız hesabı dikkate almamışlardır.

Python GIL , birden fazla çekirdeği etkili bir şekilde kullanmanıza izin vermez.


4
GIL, 4 çekirdeğin kullanımını biraz daha zorlaştırır . Hiçbir şekilde imkansız, hatta gerçekten bu kadar zorlayıcı hale gelmez.
Sahte İsim

5

Birden çok çekirdek kullanmak , genellikle programlayıcının çok iş parçacıklı bir program yazmasını gerektiren iş parçacığı düzeyinde paralelliğin açıkça gösterilmesini gerektirir. (Ya ile derleme gibi farklı girdilerin tek parçacıklı programı birden çok kez çalıştırmak için make -j4)

Yine de bazı diller için derleyiciler otomatik paralelleştirmeyi destekler. Örneğin, OpenMP'li C veya C ++, sıradan bir for()döngüyü birden çok iş parçacığı başlatan bir programa derleyebilir .

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

Ama yine de, bu programı yazarken veya derlerken gerçekleşmelidir. Mevcut donanım ve işletim sistemlerinin tek iş parçacıklı bir programı hızlandırmak için birden fazla çekirdek kullanmasının bir yolu yoktur.


İlgili: Tek bir iş parçacığı birden çok çekirdek üzerinde nasıl çalışır? : cevap: bilmiyorlar. Ancak, tek bir CPU çekirdeğinin bir kerede bir komuttan daha hızlı çalıştırmak için bulduğu ve kullandığı Talimat düzeyinde paralellik gibi başka paralellik türleri de vardır .

Bu soruya cevabım, modern CPU'ların ince taneli talimat düzeyinde paralelliği nasıl buldukları ve sömürdükleri hakkında bazı ayrıntılara giriyor. (Çoğunlukla x86'ya odaklanır). Bu, aynı anda uçuşta birden fazla talimat alarak normal CPU'ların nasıl çalıştığının bir parçasıdır ve özel olarak etkinleştirmeniz gereken bir şey değildir. (Ancak, bir programı yürütürken CPU'nuzun saat başına kaç talimatı veya başka önlemleri almayı başarabileceğiniz performans sayaçları vardır.)

RPi3'ün sıralı ARM Cortex-A53 CPU çekirdeği kullandığını unutmayın . Her çekirdek 2 geniş süperskalar (ILP'nin izin verdiği saat başına 2 talimat), ancak daha fazla talimat düzeyinde paralellik bulmak ve gecikmeyi gizlemek için talimatları yeniden sıralayamaz.

Yine de, CPU boru hattına bağlanmıştır, bu nedenle uçuştaki toplam talimat sayısı (boru hattının sonunda geri getirme ve kod çözme işleminden sonuna kadar geri yazma aşamasına kadar) önemlidir. Veri bağımlılıkları bir şeyleri sınırlamadığında, CPU'nun üzerinde çalıştığı her boru hattı aşamasında 2 saat olabilir ve saat başına 2 komut verilebilir. (2 genişlik bu demektir.)

Talimatları arızalı olarak yürütemez, ancak dikkatli talimat siparişiyle (genellikle bir derleyici tarafından), çıktısının hazır olması için birden fazla döngü gerektiren bir komutun gecikmesini gizleyebilir. (örneğin, önbellekte veya çarpma işleminde vurulsa bile bir yük birden fazla döngü alacaktır, buna karşılık eklenti bir sonraki döngü için hazır olacaktır). İşin püf noktası asm talimatlarını sipariş etmektir, böylece sonuç üreten ile onu kullanan arasında birden fazla bağımsız talimat vardır.

Yazılımın (derleyici) statik olarak talimatlar programlaması, program sırasına göre çalışma yanılsamasını korurken dahili olarak yeniden sıralayabilecek donanıma sahip olmaktan daha kırılgandır. Derleyicilerin talimatları yeniden düzenlemek için küçük bir sıra dışı pencere kadar iyi bir iş yapması çok zordur, çünkü önbellek özümleri tahmin edilemez ve derleme zamanında işlev çağrıları arasındaki bağımlılık zincirlerini analiz etmek zordur. Ve kayıtların sayısı, donanım kaydı yeniden adlandırılmadan sınırlıdır.


Tüm bunlar, kodunuz istediğinizden daha yavaş çalıştığında küçük bir rahatlıktır. Elbette bir Cortex-A53'te kaputun altında çok güzel şeyler var, ancak bir Cortex-A57'de kaputun altında daha güzel şeyler var (saat başına 3 talimatın sıra dışı yürütülmesi gibi) ve hatta daha fazlası Skylake gibi büyük bir x86 CPU (saat hızı farklarından bahsetmiyorum).

Cortex-A53, bilgisayar mimarisi dersinde öğreneceğiniz orijinal MIPS gibi https://en.wikipedia.org/wiki/Classic_RISC_pipeline kıyasla oldukça harika , ancak modern standartlara göre oldukça düşük.


1
"Mevcut donanım ve işletim sistemlerinin tek iş parçacıklı bir programı hızlandırmak için birden fazla çekirdek kullanmasının bir yolu yok." STRICTLY doğru değil. Örneğin, tek iş parçacıklı bir Java programında Java, tüm GC ve çalışma zamanı analizlerini / derlemelerini ek CPU çekirdeklerinde yapabilir. Çalışma zamanı analizi, "tek iş parçacığınıza" herhangi bir maliyeti ödemeden kod yollarını temel alan bazı optimizasyonlar yapmaya karar verebileceğinden ve analizden öğrendikleriyle büyük ölçüde hızlandırabildiğinden büyük bir anlaşmadır. Genel olarak sizin açınızdan iyi bir nokta.
Bill K

@BillK Adil olmak gerekirse, bu bağlamdaki "program" javadeğildir myapp.jar, ve kesinlikle tek iş parçacıklı değildir.
goldilocks

1
Doğru, sadece çalışma zamanının nasıl tasarlandığına bağlı olarak, yazdığınız "kodu", tek iş parçacıklı olsa bile, açıkça çok iş parçacıklı bir uygulama olarak kodlamadan ekstra çekirdeklerden faydalanabileceğine işaret ediyordum. Python daha güçlü bir çalışma zamanı da sağlayabilirdi ama bir nevi anlamsız olurdu. Yine de büyük bir sıçrama değil - java'nın bile sadece tek bir dişli uygulama ile yardımcı olmak için ekstra 1/2 çekirdek gibi kullandığını düşünüyorum.
Bill K

" Mevcut donanım ve işletim sistemlerinin tek iş parçacıklı bir programı hızlandırmak için birden fazla çekirdek kullanmasının bir yolu yoktur. " Ve hemen ardından donanımın talimatları paralel olarak nasıl yürüttüğünü açıklarsınız.
Thomas Weller

3
@ThomasWeller Evet, ancak seçici işlemci boru hattı olmak için birden çok çekirdek kullanılmaz; bir çekirdeğin içinde bulunur, ancak birden fazla talimat akışı üzerinde çalışmaya izin verir. Yani, bu bir paralellik bir şekilde, ama değil çok çekirdekli diş şeklidir.
goldilocks

4

İşlemciler bu şekilde çalışmaz ...

Şu anda olduğu gibi, CPU'nuz% 100 kullanımda mükemmel bir şekilde çalışabilir ve 80 santigrat derece veya daha fazla sıcaklıkla ilgili sorunlar nedeniyle kısılmadığını varsayar. Bununla birlikte, (genellikle) CPU'nuzun% 100 oranında sabitlendiğini görmek istemezsiniz. Rutin olarak% 100 CPU kullanımındaysanız, muhtemelen işlemcinizin işleyemeyeceği çok fazla şey vardır. Bu, kekemeliğe ve genellikle mutsuz bir kullanıcı deneyimine neden olacaktır.

Daha fiziksel bir şeyle karşılaştırmak için, CPU kullanımınız bir arabaya çok benzer. Araba muhtemelen 100 mil / saat gidebilir, ancak hız ölçerinizin altında önemli bir şey okuma şansı yüksektir. Şehirdeyken, asla 25 mil / saat alamayabilirsiniz. Ancak bu, aracın 100 mil / saat hıza çıkabileceğini değiştirmez. Hızlandırıcıyı yeterince sert itmediniz.

RPi'yi daha fazla şey yaparsanız (hızlandırıcıyı daha fazla itin), CPU kullanım rakamının yükseldiğini görürsünüz. Örneğin, komutu yesbir terminal penceresinde çalıştırdığınızda CPU kullanımını izleyin ( ctrl+cTerminal komutlarının sona erdiğini unutmayın ). Bu, dört CPU çekirdeğinizden birini maksimize ettiği için CPU'nuzu% 25 artıracaktır.


5
Bu cevabın yanıltıcı olduğunu düşünüyorum, yani CPU'nuzun% 100 kullanımda çalışmasını istemiyorsunuz. Makineyi (veya makineleri) hesaplamaya ayırdığınız için kesinlikle% 100 kullanım istediğiniz çok sayıda sayısal yoğun uygulama vardır. Gerçek süper bilgisayar zamanı elde etmek için , kodunuzun bunu yapmak için yeterince iyi optimize edildiğini kanıtlamanız gerekir, aksi takdirde sizi kaynak israfı olarak reddederler. Bir Pi kümeniz varsa, açıkçası süper bilgisayar performansı elde edemezsiniz, ancak bu, kullanımı en üst düzeye çıkarmayı daha az değil, daha kritik hale getirebilir!
Tuğla

3
Bir işlemci% 25 ise, bunun nedeni gaz tasarrufu yapmak veya hız sınırına uymaktır;) veya kibar ve domuz kaynakları değil. Bunun genel olarak G / Ç'de hangi görevi her zaman beklediğinden dolayı açıklığa kavuşturmak isteyebilirsiniz. Tamamen tek bir çekirdeği çalıştırabilecek şeyler olacak. Bunun (ideal olarak) kullanıcı arayüzünü bozmasını engelleyen şey zaman dilimlemesidir - ancak gerçekçi olarak, küçük bir tek çekirdekli makineyi sıkmak oldukça kolaydır.
goldilocks

% 100 CPU kullanımı genellikle zayıf UX'a neden olmaz. Çoğu program CPU tarafından değil diğer faktörlerle sınırlı olduğu için% 1000 bile yeterince iyi olabilir. Aşırı CPU yükü nedeniyle yavaşlayan programlar yalnızca CPU'yu her zaman kullanan programlardır.
Oskar Skog

4

Diğer cevaplar iyi ayrıntı veriyor, ancak sorularınızı özellikle ele almıyor gibi görünüyor.

  1. Program (ve işletim sistemi) birden çok çekirdeği hesaba katacak şekilde programlanmışsa, evet. ('Diş açma' buradaki programlama terimidir)
  2. Makine, görevi tamamlamak için gerektiği kadar çok veya az sayıda çekirdek kullanır. yani hiçbir şeyi değiştirmeye gerek yok.
  3. Sen olabilir maksimum kullanım sınırlama getirebilir, fakat normal kullanımda ihtiyaç yoktur. cevapları burada bulabilirsiniz: - /unix/151883/limiting-processes-to-not-exceed-more-than-10-of-cpu-usage

Not:

Genel olarak pi'nin performansını arttırmak istiyorsanız Overclock'a bakmak isteyebilirsiniz. Bu, CPU'nun daha hızlı çalışmasını sağlar. Dezavantajları artan ısı üretimi, işlemcinin daha düşük kullanım ömrü ve güç tüketiminin artmasıdır.


2

Mümkünse betiği parametreleştirir ve ayrı Python işlemlerinde yürütürüm. Örneğin:

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

Diğer bir alternatif ise, python işlemlerini çatalla ve birleştirmenize izin veren daha önce bahsedilen çok işlemcili kütüphanedir. Ancak bu, hesaplamaların çalıştırılmasını istediğiniz parametrelerin (dosya adı gibi) bir listesini de gerektirir.


Birinci bölüm: Evet, problemin el altında olduğunu varsaymak utanç verici bir şekilde paraleldir .
Peter Mortensen

Doğru, sadece çok işlemciliğin işlem havuzuna aşinaydım, mapama görünüşe göre oldukça karmaşık paylaşılan bellek yapıları da var.
NikoNyrh


0

RPI'nızı test etmek istiyorsanız. Buradastress olduğu gibi çalışabilir , ardından CPU'larınızın nasıl kullanıldığını görebilirsiniz . Bu yararlıdır, çünkü güç kaynağınızın yeterli olup olmadığını görebilirsiniz, eğer yeterli değilse RPI'nız çok fazla akım (amper) kullanmaya çalışacak ve kapanacaktır.htop

Öte yandan, python komut dosyası kullanmak joblibistiyorsanız, süreçleri paralelleştirmek istediğinizde hangisinin harika çalıştığını görmelisiniz ve böylece istediğiniz işlemci sayısını kullanacaksınız.


0

Tüm bu cevaplar farklı şekillerde doğru olmasına rağmen, işletim sisteminin yükü yaymak için otomatik olarak farklı çekirdekleri kullanacağı doğrudur. Bunu basit bir python programı ile görebilirsiniz (temp.py demek)

while True:
  x = 1.0

RPi masaüstünüzden bir terminal açın ve $ topişlemci çalışmasını gösteren yazın . Sonra başka bir terminal açın ve python3 temp.pybir python3 işinin% 100 işlemci süresine yükseldiğini göreceksiniz. Ardından başka bir terminal açın ve işlemi tekrarlayın ve% 400'e kadar nasıl hareket ettiğinizi görün. Yani @Shadow'ın yorumladığı gibi bir düzeyde bu kadar basit ve varsayılan. Bununla birlikte, paralel işlemeyi kullanabilen programlar tasarlamak, diğerlerinin açıkladığı gibi önemsiz değildir.


0

Cevap kocaman bir EVET! Bunları tanımak ve kullanmak için programınızı yazmanız yeterlidir. Bunu yapan programlar çekirdeği kullanabilir. Bunu Java'da yapmak için benimkini yazıyorum ve böylece yapabilirim.

Python geliştiricilerinin yukarıdaki cevapları bu cevap hakkında çok sınırlı bir kavrama sahiptir ve bu yüzden çok kafa karıştırıcı olabilir, ancak cevap EVET ve sadece EVET!


Lütfen biraz açıklayabilir misiniz?
SDsolar

0

OP sorusunda python belirtmediğinden, Raspberry Pi'de iyi çalışan ve eşzamanlılığı kullanmanın çok kolay yollarına sahip iki daha modern dil önermek istiyorum.

Şu anki favorim Rust dilidir. Pi üzerine programlar yazdım ve derledim. Rust, eşzamanlı kod yazmayı hem daha kolay hem de daha güvenli hale getiren birçok işaretçi ve yarış koşulu türünü önlediği için iyidir. Rust bir sistem programlama dilidir, ancak C'nin yapabileceği hemen hemen her şeyi yapabilir.

Böyle bir başka dil Go'dur (aramayı kolaylaştırmak için Golang olarak da adlandırılır). Go, Google ekibi tarafından oluşturuldu ve oldukça olgun bir dildir. Go'da "Git rutinleri" adını verdikleri yardımcı program yapmak kolaydır.

Bu dillerin her ikisi de Raspberry Pi'de, hatta Pi Zero'da kod derleyebilir. Ancak, her ikisi de büyük programlar için iyi olan daha hızlı bir bilgisayardan çapraz derlenebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.