差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン両方とも次のリビジョン
programming:python:packages:numba [2020/07/01] ikatakosprogramming:python:packages:numba [2020/07/04] – [引数・戻り値に使える主な型] ikatakos
行 94: 行 94:
   * (*2) Unicode文字列(Python3における通常の文字列)   * (*2) Unicode文字列(Python3における通常の文字列)
   * (*2) numba.typed.List, numba.typed.Dict   * (*2) numba.typed.List, numba.typed.Dict
-  * コンパイル済み関数 +  * コンパイル済み関数(いろいろ制約あり)
-    * 引数としてのみ使用可+
  
-その他もあるかも知れないけど、どこ見れば書いてあるのかよくわかってない。 +その他もあるかも知れない。 
-なるべく上の3つのみを使うようにした方がよさそう。(個々の問題点は後述)+ 
 +なるべく上の3つのみを使うようにした方がよさそう。
  
 (*1)はdeprecatedで今後使えなくなる可能性が高い。 (*1)はdeprecatedで今後使えなくなる可能性が高い。
行 129: 行 129:
   * [[https://numba.pydata.org/numba-doc/dev/reference/pysupported.html#list|Supported Python features — Numba 0.50.0.dev0+236.g64fbf2b-py3.7-linux-x86_64.egg documentation]]   * [[https://numba.pydata.org/numba-doc/dev/reference/pysupported.html#list|Supported Python features — Numba 0.50.0.dev0+236.g64fbf2b-py3.7-linux-x86_64.egg documentation]]
  
-どちらも、Pythonのlist機能をNumbaで出来る範囲で表現することを目的としたデータ構造。+どちらも、Pythonのlist機能に似せようなデータ構造。一応、以下の違いがある
  
-  * reflected list: Pythonのlistをそのまま受け取ってNumbaで解釈できるようにしたもの+  * reflected list: 扱い上はPythonのlistのまま、制約を加えてNumbaで解釈できるようにしたもの
   * typed list: Numba独自のリスト構造クラス   * typed list: Numba独自のリスト構造クラス
  
-reflected list は deprecated。下記を読むと、ネスト等で複雑になると限界があるので typed listに置きかえていく方針らしい。+reflected listは deprecated。ネスト等で複雑になると限界があるのでtyped listに置きかえていく方針らしい。
  
   * [[http://numba.pydata.org/numba-doc/latest/reference/deprecation.html#deprecation-of-reflection-for-list-and-set-types|Deprecation Notices — Numba 0.50.1 documentation]]   * [[http://numba.pydata.org/numba-doc/latest/reference/deprecation.html#deprecation-of-reflection-for-list-and-set-types|Deprecation Notices — Numba 0.50.1 documentation]]
  
-そのため、reflected list は(問題なく使えるものの)ver.0.45以降では警告が出る。+そのため、reflected listは(今のところ問題なく使えるものの)ver.0.45以降ではその旨の警告が出る。
  
 また、typed listの方は「実験的機能」とされていて、バグがあったり、高速化の恩恵が少なくなる可能性が言及されている。 また、typed listの方は「実験的機能」とされていて、バグがあったり、高速化の恩恵が少なくなる可能性が言及されている。
行 149: 行 149:
  
   * reflected list   * reflected list
-    * 外部から与える際はネスト不可。要素の型は統一されている必要がある +    * 外部から与える際はネスト不可Numba関数内部で生成する場合はネスト可 
-    * Numba関数内部ではネスト可 +    * Numba関数内部で「''a = [0, 1]''」とすると、こちらになる
-    * Numba関数内部で「''a = [0, 1]''などとすると、こちらになる+
   * typed.List   * typed.List
     * ネスト可     * ネスト可
-    * ''numba.typed.List()'' で空のインスタンスを生成、1つずつappendする+    * 一度に生成することはできなくて、''numba.typed.List()'' で空のインスタンスを生成、1つずつappendする((ver.0.49で、コンストラクタにイテレータを渡せるようになった))
  
 また、Pythonのデータ構造にはListの他にSet, Dictがあるが、 また、Pythonのデータ構造にはListの他にSet, Dictがあるが、
programming/python/packages/numba.txt · 最終更新: 2023/10/03 by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0