web-dev-qa-db-ja.com

Pythonは同期していますか?

同期マニュアルページ は言う:

sync()を使用すると、ファイルメタデータおよびデータに対するすべてのバッファリングされた変更が、基になるファイルシステムに書き込まれます。

Pythonにはこれを行うための呼び出しがありますか?

P.S. fsync ではありません。

15
dfrankow

Python 3.3にはos.syncがあります。 ドキュメント を参照してください。 source はそれが同じことであることを確認します。

Python 2の場合、システムに対して 外部呼び出し を実行する必要がある場合があります。

17
bbayles

前述のように、Python 3.3には呼び出しがあります-on Python 2.x、これは単純なシステムコールであり、データをやり取りする必要がないためです、ctypesを使用して呼び出しを行うことができます。

>>> import ctypes
>>> libc = ctypes.CDLL("libc.so.6")
>>> libc.sync()
0
14
jsbueno

twoanswers を組み合わせて、モジュールの上部で次を使用します。

if hasattr(os, 'sync'):
    sync = os.sync
else:
    import ctypes
    libc = ctypes.CDLL("libc.so.6")
    def sync():
        libc.sync()
7
Frederick Nord