Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでのfcntlおよびioctlシステムコール


ファイルとioを制御するには、 fcntlを使用する必要があります モジュール。これは基本的に、fcntl()およびioctl()Unixルーチンへの1つのインターフェースです。

このモジュールのすべてのメソッドは、最初の引数として1つの整数またはio.IOBaseファイル記述子を取ります。

このモジュールを使用するには、を使用してインポートする必要があります。

import fcntl

fcntlモジュールにはいくつかのモジュールがあります。これらは-

です。

メソッドfcntl.fcntl(fd、op [、arg])

このメソッドは、ファイル記述子を使用してファイルに対して操作を実行するために使用されます。操作はopによって定義されます 。 3番目の引数はオプションです。整数型の値または文字列型の値のいずれかです。引数が整数型の場合、戻り値はC fcntl()呼び出しの値になります。文字列の場合、バイナリ構造を表します。この関数が失敗すると、IOErrorが発生します。

メソッドfcntl.ioctl(fd、op [、arg [、mutate_flag]])

このメソッドはfcntl()メソッドと同じですが、この場合、引数の処理はより複雑です。引数では、可変バッファーが渡された場合、その動作はmutate_flagに依存します。 trueの場合、バッファは変更可能である可能性があります。それ以外の場合は、読み取り専用バッファのように機能します。

メソッドfcntl.flock(fd、op)

このメソッドは、file_descriptorを使用してファイルのロック操作opを実行するために使用されます。一部のシステムでは、このメソッドはfcntl()メソッドを使用してエミュレートできます。

メソッドfcntl.lockf(fd、operation [、length [、start [、whence]]])

このメソッドは、ロック呼び出しのラッパーとして実行するために使用されます。操作引数は、ファイルをロックまたはロック解除するために渡されます。操作にはさまざまな値があります。

  • LOCK_UN −ファイルのロックを解除するには

  • LOCK_SH −共有ロック

  • LOCK_EX −排他的ロック

サンプルコード

import fcntl, os, time
counter_file = 'my_counter.txt'
if not os.path.exists(counter_file):
   counter_file = open('my_counter.txt', 'w')
   counter_file.write('0') #Store 0 as starting number
   counter_file.close()
for i in range(15):
   counter_file = open('my_counter.txt', 'r+')
   fcntl.flock(counter_file.fileno(), fcntl.LOCK_EX)
   count = int(counter_file.readline()) + 1
   counter_file.seek(0)
   counter_file.write(str(count))
   counter_file.close()
   print('Process ID: ' + str(os.getpid()) + ', Count: ' + str(count))
   time.sleep(0.2)

出力

$ python3 example.py
Process ID: 12698, Count: 1
Process ID: 12698, Count: 2
Process ID: 12698, Count: 3
Process ID: 12698, Count: 4
Process ID: 12698, Count: 5
Process ID: 12698, Count: 6
Process ID: 12698, Count: 7
Process ID: 12698, Count: 8
Process ID: 12698, Count: 9
Process ID: 12698, Count: 10
Process ID: 12698, Count: 11
Process ID: 12698, Count: 12
Process ID: 12698, Count: 13
Process ID: 12698, Count: 14
Process ID: 12698, Count: 15
$
$
$ cat my_counter.txt
15
$

  1. Python Pandas-カウントプロットを作成し、Seabornでバーのスタイルを設定します

    Seabornのカウントプロットは、バーを使用して各カテゴリのビンの観測数を表示するために使用されます。これにはseaborn.countplot()が使用されます。 facecolorを使用してバーのスタイルを設定します 、線幅 およびエッジカラー パラメータ。 以下がCSVファイル形式のデータセットであるとしましょう-Cricketers.csv まず、必要なライブラリをインポートします- import seaborn as sb import pandas as pd import matplotlib.pyplot as plt CSVファイルからPandasDataFrame

  2. 最も出現する文字とその数を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力文字列が与えられた場合、最も出現する文字とその数を見つける必要があります。 アプローチ 文字列をキーとして、頻度を値として持つCounterメソッドを使用して辞書を作成します。 文字の最大出現回数、つまり値を見つけて、そのインデックスを取得します。 次に、以下の実装を見てみましょう- 例 from collections import Counter    def find(input_):    # dictionary &