def empirical_distribution_2(x, samples):
return len([y for y in samples if y < x])/len(samples)
dminus = max([norm_frozen.cdf(x) - empirical_distribution_2(x, t_samples) for x in t_samples])
print(dminus)
# 0.04361195130340301
from tqdm import tqdm
import time
for i in tqdm(range(1000)):
time.sleep(0.01)
# 以下が出力されるプログレスバー。
100%|██████████| 1000/1000 [00:10<00:00, 97.60it/s]
内包表記でも使えます。
square_numbers = [i**2 for i in tqdm(range(100))]
# 以下出力
100%|██████████| 100/100 [00:00<00:00, 242445.32it/s]
単純にリストを周回させるだけでなく、enumerate や zip を使うこともあると思います。 この場合、これらの関数の外側にtqdmをつけると、一応進捗を数字で出してはくれるのですが、進捗のバーが出ません。
list_a = list("abcdefghij")
for i, s in tqdm(enumerate(list_a)):
print(i, s)
# 以下出力
10it [00:00, 16757.11it/s]
0 a
1 b
2 c
3 d
4 e
5 f
6 g
7 h
8 i
9 j
この場合、少しコツがあって、enumerateやzipの内側にtqdmを使うと良いです。
for i, s in enumerate(tqdm(list_a)):
print(i, s)
# 以下出力
100%|██████████| 10/10 [00:00<00:00, 20301.57it/s]
0 a
1 b
2 c
3 d
4 e
5 f
6 g
7 h
8 i
9 j
# zipの場合は内側のリストの一方を囲む。
for a, b in zip(tqdm(range(10)), range(10, 20)):
print(a, b)
# 以下出力
100%|██████████| 10/10 [00:00<00:00, 8607.23it/s]
0 10
1 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19
あとは滅多に使わないのですが、for文ではなく、事前にループ回数が決まっていないループで使う方法を書いておきます。 下のように、 with でインスタンスを作って、明示的にupdateとしていきます。あらかじめのループ回数を渡していないのでバーや進捗率は出ませんが現在の実行回数が観れるので一応進捗が確認できます。
i = 1
with tqdm() as pbar:
while True:
pbar.update(1)
i += 1
# 無限ループ防止
if i>100:
break
# 以下出力
100it [00:00, 226229.99it/s]
ブラウザでアクセスすると、以下の結果が得られます。 まぁ、普通にMac Book Proの Chrome ブラウザですね。なぜか Safari の文字列も入っています。
<!DOCTYPE html>
<table>
<tr><th>User Agent
<tr><td>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36
</table>
ハードリンクは、一つの実体を持つファイルを表現するパスを複数作る方法です。 マニュアルにも、ハードリンクでは、リンクと元のファイルの区別はつかないと書かれています。 man ln から抜粋。 > A hard link to a file is indistinguishable from the original directory entry
ls コマンドで作ったデータを見るときに、-iオプションをつけてiノード番号も表示させました(先頭の8795955がそれ)。iノードというのは、ファイルの属性が記録されているデータのことで、iノード番号というのはそのデータについている番号のことです。このデータは実体のファイルと対応して存在しているので、実質的にディスク上のファイルの実体と対応している番号だと考えて大丈夫です。iノード番号が同じなら同じファイルを表しています。
ls の結果を見ていきましょう。まずハードリンクの方(file02_hard.txt)です。 着目するべきは、最初のiノード番号で、元のファイルと全く同じになっています。これはfile02_hard.txtがfile01.txtと全く同じ実体ファイルにリンクしていること意味しており、同じデータに対して2個ファイル名があるような状態にになっています。ファイルサイズも同じ34バイトですね。 権限(-rw-r–r–) の後ろに 2 という数字がありますが、実はこれ、そのファイルへのリンク数です。元々1だったのがハードリンクを作成したことで2になっています。そして、ここからわかるのですが、シンボリックリンクの方はノーカウントです。(カウントされるなら3になるはず。) ちなみに、この数字がリンク数だっていう情報は、lsのマニュアル(man ls)のThe Long Format ってセクションに書かれています。