Schreiben Sie mit f2py ein Python-Modul in fortran

Python Leicht zu schreiben, aber schnell ~ → Engpass ist modularisiert fortran !! !! !! schnell! !! !!

Lassen Sie uns das zuvor geschriebene Programm zur Anzeige von Primzahlen modularisieren, das auch Fortran als Übung dient.

Umgebung

f2py (im Lieferumfang von scipy enthalten) gfortran4.7.2

Skript

Bereiten Sie eine Datei vor, die das Unterprogramm beschreibt, das Sie modularisieren möchten. Das Argument des Unterprogramms deklariert sich mit Cf2py. Der Rückgabewert der Unterroutine (dh der auf der Python-Seite empfangene Rückgabewert) wird mit Cf2py deklariert. Wenn Sie die Cf2py-Deklaration nicht am Zeilenanfang schreiben und 6 Leerzeichen im Skriptkörper öffnen, tritt ein Kompilierungsfehler auf. Anscheinend muss ich es nach Cf2py indental schreiben (es ist nervig !!)

primepy.f90


      subroutine prime_number(max_num, ret)
         implicit none
         integer max_num
         integer ret(max_num)
         integer i, j, list(max_num)
Cf2py intent(in) max_num
Cf2py intent(out) ret
         
         !setze l
         do i=1, max_num, 1
            list(i) = i
         enddo
         list(1) = 0

         !Stellen Sie eine Primzahl ein
         do i=1, max_num, 1
            if (.not. list(i) == 0) then
               do j = i*2, max_num, i
                  list(j) = 0
               end do
            endif
         enddo

         !Gibt eine Liste von Primzahlen zurück
         do i=1, max_num, 1
            ret(i) = list(i)
         enddo
      end subroutine prime_number

kompilieren

f2py -c --fcompiler=gfortran -m prime primepy.f90 Kompilieren Sie mit -c Geben Sie den Compiler mit --fcompiler an Ausgabedatei nach -m Zum Schluss die Fortran-Programmdatei Dann überprüfen Sie die Hilfe mit -h

Erfolg, wenn die Datei prime.so erstellt wird.

Lauf

Mit einem Python-Interpreter

>>> import prime
>>> a = prime.prime_number(100)
>>> a
array([ 0,  2,  3,  0,  5,  0,  7,  0,  0,  0, 11,  0, 13,  0,  0,  0, 17,
        0, 19,  0,  0,  0, 23,  0,  0,  0,  0,  0, 29,  0, 31,  0,  0,  0,
        0,  0, 37,  0,  0,  0, 41,  0, 43,  0,  0,  0, 47,  0,  0,  0,  0,
        0, 53,  0,  0,  0,  0,  0, 59,  0, 61,  0,  0,  0,  0,  0, 67,  0,
        0,  0, 71,  0, 73,  0,  0,  0,  0,  0, 79,  0,  0,  0, 83,  0,  0,
        0,  0,  0, 89,  0,  0,  0,  0,  0,  0,  0, 97,  0,  0,  0], dtype=int32)

Wasser

Ich konnte mir keinen einfachen Weg vorstellen, nur ungleich Null zurückzugeben, also ist dies auf der Python-Seite "a.take (a.nonzero () [0])".

Fazit

Gerne den Engpass beseitigen Wenn Sie mit fortran nicht verstehen, behandeln Sie es auf der Python-Seite! !! Die beste Liste von Python! !! !!

Recommended Posts

Schreiben Sie mit f2py ein Python-Modul in fortran
Schreiben Sie Python in MySQL
Schreiben Sie Pandec-Filter in Python
Schreiben Sie die Beta-Distribution in Python
Lesen und schreiben Sie NFC-Tags mit Python mit PaSoRi
Übersetzt mit Googletrans in Python
Verwenden des Python-Modus in der Verarbeitung
Lesen Sie die Fortran-Ausgabe mit Python
Schreiben Sie eine Dichotomie in Python
GUI-Programmierung in Python mit Appjar
Vorsichtsmaßnahmen bei der Verwendung von Pit mit Python
Schreiben Sie ein JSON-Schema mit Python DSL
Schreiben Sie einen HTTP / 2-Server in Python
Schreiben Sie die AWS Lambda-Funktion in Python
Verwendung globaler Variablen in Python-Funktionen
Schreiben Sie Selentestcode in Python
Schreiben Sie ein Kreisdiagramm in Python
Schreiben Sie das Vim-Plugin in Python
Schreiben Sie eine Suche mit Tiefenpriorität in Python
Mal sehen, wie man Eingaben in Python verwendet
Gesamtleistung in Python (mit Funktools)
Handschriftliche Zeichenerkennung mit KNN in Python
Schreiben Sie einen C-Sprach-Unit-Test in Python
Versuchen Sie es mit LeapMotion mit Python
Suche nach Tiefenpriorität mit Stack in Python
Bei Verwendung regulärer Ausdrücke in Python
GUI-Erstellung in Python mit tkinter 2
Schreiben Sie mit dem ETE Toolkit verschiedene Formen phylogenetischer Bäume in Python
Mausbedienung mit Windows-API in Python
Hinweise zur Verwendung von cChardet und python3-chardet in Python 3.3.1.
Module und Pakete in Python sind "Namespaces"
Versuchen Sie es mit der Wunderlist-API in Python
GUI-Erstellung in Python mit tkinter Teil 1
Holen Sie sich Suica Balance in Python (mit libpafe)
Hash-Passwörter langsam mit bcrypt in Python
Versuchen Sie, die Kraken-API mit Python zu verwenden
Verwenden von venv in der Windows + Docker-Umgebung [Python]
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Tweet mit der Twitter-API in Python
[Python] [Windows] Serielle Kommunikation in Python über DLL
Schreiben Sie eine kurze Eigenschaftsdefinition in Python
Melden Sie sich mit Anforderungen in Python bei Slack an
Schreiben Sie die O_SYNC-Datei in C und Python
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
Schreiben Sie ein Caesar-Verschlüsselungsprogramm in Python
Verwenden physikalischer Konstanten in Python scipy.constants ~ Konstante e ~
Scraping von Websites mit JavaScript in Python
Entwicklung eines Slack Bot mit Python mit chat.postMessage
Lesen und schreiben Sie JSON-Dateien mit Python
Schreiben Sie eine einfache Giermethode in Python
Schreiben Sie ein einfaches Vim-Plugin in Python 3
Zeichnen Sie mit graphviz eine Baumstruktur in Python 3
Hinweise zur Verwendung von Python (Pydev) mit Eclipse
Krankheitsklassifizierung durch Random Forest mit Python
Laden Sie Dateien in jedem Format mit Python herunter
Parallele Taskausführung mit concurrent.futures in Python
Wie schreibe ich Ruby to_s in Python