2

私はpythonが初めてです。しかし、Python の mmap が .py ファイルではなく、共有ライブラリとして実装されている理由に興味があります。これにより、私の IDE は mmap のソース コードにインデックスを付けることができなくなります。

私のpython3.2環境(ubuntu 12.04)での出力は次のとおりです。

markz@markz-hp6200:~$ python3.2
Python 3.2.3 (default, Oct 19 2012, 20:10:41) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mmap
>>> print(mmap.__file__)
/usr/lib/python3.2/lib-dynload/mmap.cpython-32mu.so
>>> 
4

3 に答える 3

4

mmapmmapLinux 上の関数 (およびMapViewOfFileWindows 上の関数) などの OS 固有の機能を使用します。これらは Python で (モジュールなどを介して) 直接利用できないosため、これらの関数を呼び出すには、少なくともmmapモジュールの一部を C で記述する必要があります。

この特定の用途は効率とは何の関係もありませんctypes。この OS 機能を使用するには、モジュールを C で作成する (または を使用する) 必要がありました。

于 2013-03-07T02:37:04.190 に答える
1

C で書かれた Cpython の標準ライブラリにはいろいろなものがあります。他にもitertools、( ) の部分、csv( ) の部分…などなど。開発者は、コンパイルされた言語を使用すればコードを高速化できると判断しました。_csvcollections_collections

于 2013-03-07T02:35:10.510 に答える
1

mmapPython ではなく C で実装されています。C で実装された拡張モジュールは共有ライブラリでなければなりません。

なんで?この場合、おそらく C にアクセスしないと機能を実装できないためです。Python で実装されているモジュールは、他のモジュールで提供されている機能を使用して実装されています。ただし、mmap 機能は、C 標準ライブラリ関数を呼び出すことによって実装されます。それがpythonファイルである可能性はありません。

于 2013-03-07T02:37:19.037 に答える