Julia v1.10.3 has been released
https://discourse.julialang.org/t/julia-v1-10-3-has-been-released/113667
ダウンロードサイト(https://julialang.org/downloads/)を見て、Apple Silicon用のJuliaがTier 1になっていることに気付く。
ありがたい。
既にあるPythonの関数(サブルーチン)をJuliaで使いたい、あるいは、JuliaよりもPythonを使った方が書きやすい場合にはPycallが便利と思う。
今、呼びたい関数を含むファイルの名前がhoge.py、呼びたい関数をfoo、その引数がx,、y、戻り値をzとする。
まず
using Pycall
として、次いでpyincludeというマクロを使って
@pyinclude("hoge.py")
として、Pythonのファイルを読み込むと準備完了。
あとは呼びたい位置で
z = py”foo”(x, y)
とすれば呼び出せる。
関数名だけをダブルクオーテーションで括り、戻り値や引数部分は外にするというちょっと不思議な書き方をする。
Julia v1.9.4 has been released - Announcements - Julia Programming Language
https://discourse.julialang.org/t/julia-v1-9-4-has-been-released/106230
#julialang のバージョン管理を楽にするツール#juliaup をインストール。バージョンの使いわけも可能にしてくれる。
本家サイトはhttps://github.com/JuliaLang/juliaup/
別ファイル仕立てにした#julialang の#module の使い方の粗末なメモ
・使いたい関数の名前をfuga
・使いたいモジュール名をHoge
※Juliaではモジュール名の先頭は大文字にする慣習らしい
・モジュールが書かれているファイルの名前をmodule.jlとする。
>モジュールを使うためには
1) まずそのモジュールが書かれているファイル(ココデハmodule.jl)をincludeする必要がある。
include("module.jl")
2) 次いで、usingを使って使いたいモジュールを読み込む。
using .Hoge
使いたいモジュールの名前の前に.(ピリオド)を忘れない。
ピリオドは「このファイル中」を意味する。
>使いたい関数がモジュール内で
export fuga
という具合にexportが宣言されていれば、単にfugaだけでその関数を呼べる。
そうでない場合、モジュール名と繋げて
hoge.fuga
とすれば呼べる。
※モジュール名と関数名がダブっていると、ダブった関数は呼べない。
経験で知った。
★今後の課題★
モジュールを読み込むときの別法であるimportとの違いを理解する。
#julialang のお絵描きツールに慣れていないせいか、Julia上でお絵描きがしにくい。
ここで悩むよりは#Python に持ち込んだ方が早いので、やや大きめでのファイルをPythonとやりとりできるフォーマットを探していて、#HDF5 がよさげに見えたので、書き出す方法を変更した。
HDF5の仕様には深入りせずに、とにかくまずはネットに出ている「呪文」を唱えて、まがりなりにもファイルの読み書きできることを最優先。
https://qiita.com/cometscome_phys/items/7ced3362ac64b98129d1
の記事でどうにかなった。
前のTootで触れた記事を執筆された方は、『1週間で学べる! Julia数値計算プログラミング』の著者の方と思われますが、この本は#julialang の入門用としては個人的にはオススメです。
この本でとっかかりさえつかめれば、あとはネットの情報でだんだんと使いこなせていけると思います。
最初は、Juliaらしさとか余計なことは考えずに、とにかく動くコードを作ることに集中して慣れていくようにした方がよいと思います。
コーディングの仕方で、Pythonほどは処理速度が変わったりもしないと思いますので。
早いコードを書くのは、まがりなりにもコードが書けるようになった次のステップと思います。
というか、書き方で処理速度が変わるぐらいのレベルに達したときにはかなり上級者の域と思います。
#python の#pickle に相当するものとして、#julialang には#JLD や#JLD2 なるものがある。
JLDとJLD2との間の互換性は考慮されていない。
JLD2の方が読み書きは早いらしい。
ということで、JLD2を使ってみることに。
HDF5の「亜種」らしいが、HDF5をほとんど理解できていないので、「そうなんですか」以上の感想が持てない。
JLDの本家:https://github.com/JuliaIO/JLD.jl
JLD2の本家:https://github.com/JuliaIO/JLD2.jl
うむむ、私がやりたいことに使うには厳しい模様。
#python で#pickle として出力した100万行のリスト(1行あたりは3つの倍精度の実数からなる1行のリストで、リストが入れ子になっている)を読み込ませたところ、#python では2秒足らずで済むところをPickle.jlを使った#julialang では50秒超えであった。
#PyCall で#python のモジュールを使って読み込んだ上で#julialang に持ち込むのがよさそう。
fedibirdにぼちぼち慣れていきたいと思います。書き損じが多いため、いったん投稿した後に引き戻して修正の上、再投稿をすることが多くなり、TLに何度もほとんど同じものが浮かんでは消え…をくり返して目障りな点はご容赦願います。