プログラミングPython3でマルチスレッド処理を試してみる2018年12月23日Pythonでマルチスレッド処理をさせたいと思ったので、具体的な方法を調べて試してみました。マルチスレッドで処理させるには、どうやら大きく2つの方法があるらしいです。勉強のために今回は両方で試してみます。ちなみにPython3での実装です。まとめ方法1:Threadクラスを継承するまず1つ目の方法は、threading.Threadクラスを継承したクラスを作るという方法です。具体的なコードで書くとこんな感じ。myThread();th1.start()th2.start()スレッド内で実行したい処理をrun関数内に実装してあげることがポイントです。今回は5秒間、1秒間隔でカウントアップする処理を実装しました。メイン処理では、作成したクラスのインスタンスを2つ作り、それぞれstart関数で実行開始します。実行結果はこんな感じ。4たしかにスレッド2つの処理が並行して走っていることが分かります。方法2:Threadクラスのインスタンスを作る2つめの方法は、Threadクラスのインスタンスを作る方法です。並列処理したい関数を引数に設定してthreading.Threadクラスのインスタンスを作ると、start関数で処理を走らせることができます。threading.Thread(target=proc)th1.start()th2.start()こちらの実装でも実行結果は先ほどと変わりません。クラスを定義しなくてもいい分、こちらの方がお手軽かもしれません。まとめどちらの方法でも割と簡単に並列処理を実装することができました。サブクラスを作るのかそれともインスタンスを作るのかはケースによって使い分けが必要そうですが、並列化したい処理の規模が小さければインスタンスの方がずっと簡単そうです。作るならiOS/Android両対応がいい!ということで、FlutterというGoogle製のフレームワークを使いました。開発したのは「SaltyStock」というアプリです。長期保有して塩漬け状態になっている株式銘柄を管理するというかなりニッチなアプリです笑。「個人的にこういうのあったらいいな」というものを作ることができたので、概ね満足です。Growiでイントラ向けWikiを立ち上げるチーム開発をしていくうえで、課題の1つになるのが情報共有です。チームの歴史が長いと経験値は溜まっていきますが、それらが情報として整理されていないとメンバー交代時などに大きなコストが発生します。そこで、イントラ向けのナレッジベース(Wiki)を探していたところ、Growiという良さげなOSSを見つけたので、お試し環境を立ち上げてみることにしました。手元の環境はUbuntu18.04ですが、Linuxであれば大体同じような手順になると思います。...この記事を読むLinux2019/8/14カゴヤVPSで自分専用の開発環境を立ち上げてみたどこからでもアクセスできる自分専用の開発環境が欲しい...。そんな願いを叶えるべく、VPSのことを調べていたのですが、いままで「なんか難しそう...」と尻込みしていました。最近は値段も安くて扱いやすいVPSも増えてきたので、この機会に試してみることにしました。いうことで、今回はVPSを契約して最低限の環境を立ち上げるまでの備忘録です。...この記事を読むWindows2019/5/5Windows10で不要なブートエントリを削除するWindowsのブートまわりで少しハマったので覚え書きです。私のメインPCはWindows10とUbuntuのデュアルブートだったのですが、とある事情でUbuntuを削除しWindowsのみの構成に戻すことにしました。ちなみに、デュアルブート時の環境はこんな感じ(だったはず)。元に戻したくなったときのことを考え、別HDD(ドライブB)にUbuntuとGRUBを入れ、GRUB経由でWindowsとUbuntuを立ち上げる形にしていました。プログラミング2018/12/25mmapの下処理にftruncate関数を利用する以前このブログで公開した記事の中に、C言語のmmap関数の使い方についてまとめた記事がありました。pocketsファイルの読み書きにmmapを使ってみるプログラムのループ中でファイルに何かしらのデータを書き込むとき、そのたびにwriteをしていたのではディスクへのI/Oが頻発してしまい、パフォーマンスに影響することがあります。Yoneyamaとある会社でソフトウェアエンジニアをしています。技術的な備忘録を中心にまとめてます。ネタがあれば日記も書きます。