プログラム製作日記

世の中にないプログラムをつくれたらよいなと思いながらプログラムをしていくブログです

Visual StudioでPython (マルチプロセス04-共有メモリ02)

今回はマルチプロセスで、プロセス間でデータの共有をためしてみました。

今回も共有メモリに関してです。

 

前回の記事はこちら

tut2020aaa.hatenablog.jp

 今回はファイルを利用した共有メモリのデータのやり取り方法になります。実在するファイルを利用するので、異なる言語間でのデータの共有がしやすいです。

 

今回のプログラムは以下を参照しました。

qiita.com

 上記リンクのtest1.py, test2.pyを並行に実行する必要があるため、subprocessを使用して並行実行しました。以下を参考にしました。

qiita.com

コード(test3.py)は以下の通りです。

 

import subprocess
from time import sleep

subprocess.Popen(["python", "Test1.py"])

sleep(5) #5秒待つ。

subprocess.Popen(["python", "Test2.py"])

 

このtest3.pyを実行すると、example.txt(上記でも参照している

Pythonでの共有メモリの実現方法(mmap.mmap) - Qiita

の内容を参照ください)が00から01に書き換わるのが確認できます。

 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit)

 

Python 16.10.21111.19

Python - Conda サポート 16.10.21111.19

Python - Django サポート 16.10.21111.19

Python - プロファイル サポート 16.10.21111.19

 

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Visual StudioPythonのライブラリを追加する方法は以下が参考になります。

docs.microsoft.com

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

Visual StudioでPython (マルチプロセス03-共有メモリ01)

 

 今回はマルチプロセスで、プロセス間でデータの共有をためしてみました。

 今回利用するのは共有メモリです。

 

以下のサイトに掲載されているコードを動かしてみました。

 

runebook.dev

→上記のサイトの”共有メモリ”のパラグラフのコードはコピペして実行で問題なく動かすことができました。

 

qiita.com→上記のサイトの"共有メモリ(Shared memory)"のコードは、targetの引数に指定されている関数名とmain内の変数名が一致しているため、わたしの環境ではそのままでは動かず、エラーが吐き出されました。

 

f:id:tut2020aaa:20210813003314p:plain

 

main内のprocessXという変数をpX(Xは1, 2, 3のいずれか)の改変をすることで正常に動くようになりました。

 

・改変前

>process1 = Process(target=process1, args=[count, array])

 

・改変後

>p1 = Process(target=process1, args=[count, array])

 

 ArrayクラスやValueクラスを使用して、共有メモリによる値の引き渡しができることを確認しました。

 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit)

 

Python 16.10.21111.19

Python - Conda サポート 16.10.21111.19

Python - Django サポート 16.10.21111.19

Python - プロファイル サポート 16.10.21111.19

 

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Visual StudioPythonのライブラリを追加する方法は以下が参考になります。

docs.microsoft.com

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

Visual StudioでPython (マルチプロセス02)

 

 今回はマルチプロセスで、プロセス間でデータの共有をためしてみました。

 

以下のページに乗っているコードを実行しました。

qiita.com

試したのは2個目のコードで、空の辞書を関数の一つ目の引数として渡す処理が追加されているほうです。

 

上記のページに載っているのと同じ結果になりました。

f:id:tut2020aaa:20210604113424p:plain

 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit)

 

Python 16.10.21111.19

Python - Conda サポート 16.10.21111.19

Python - Django サポート 16.10.21111.19

Python - プロファイル サポート 16.10.21111.19

 

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Visual StudioPythonのライブラリを追加する方法は以下が参考になります。

docs.microsoft.com

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

Visual StudioでPython (マルチプロセス01)

 

 今回はマルチプロセスを試してみました。

最終目標はプロセス間通信の達成です。

それができれば、ユーザーインターフェースC#, アルゴリズムPythonという使い方ができます。

 

まずは以下を参考にテストコードを実行してみました。

docs.python.org

このリンクに掲載されているコードで、Processクラスのパラグラフに掲載されているコードを実行してみました(コードはリンク先を参照ください)。

 

以下の結果になりました。

f:id:tut2020aaa:20210509140826p:plain



ひとまず、別プロセスを立ち上げるのには成功しました。

他にもWebにはサンプルコードが掲載されているので、Visual Studioで試したときに問題なくそれらが立ち上がるかを検証して、Pythonでのマルチプロセスプログラミングに慣れていきたいと思います。

 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit)

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Visual StudioPythonのライブラリを追加する方法は以下が参考になります。

docs.microsoft.com

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

ARMマイコンプログラミング(2020年 STM32ディスカバリ事始め スタートアップスクリプトエラー個所)

 下のほうにTrueStduioのインストールからプログラム作成、ビルドしたプログラムを書き込むところまでをまとめた記事のリンクを張り付けてあるので参照ください。


 

 True StudioでSTM32ディスカバリ用のコードを作成し、ビルドして書き込むと、以下のエラーがでてきます。

f:id:tut2020aaa:20210124075209p:plain

 

そこでデバック構成⇒スタートアップスクリプトとたどると、以下の内容が確認できました。13行目はloadです。

f:id:tut2020aaa:20210124074921p:plain

 

この部分を消すとエラーは起こらなくなりますが、代わりにビルドしたプログラムはマイコンには書き込まれなくなります。

ただ、デバッグはできそうなので、

 

・ビルド→TrueStudio

・書き込み→ST-LINK utility

デバッグ→TrueStudio

 

という使い分けが必要そうです。

 


<まずはここから>

TrueStduioのインストールからプログラム作成、ビルドしたプログラムを書き込むところまで。

tut2020aaa.hatenablog.jp

 

<参照>

*1 hexファイルの出力の設定は以下のページを参照しました。

gsmcustomeffects.hatenablog.com

 

*2 STM32 value line DiscoveryはST-LINKの基盤が搭載されているので、USBケーブルで基板をつなげれば専用のデバッガ/プログラマは不要なのですが、hexタイプのファイルをST-LINK utilityを使て書き込まないといけないので、以下のページを参照しました。

tri-s.world.coocan.jp

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

ARMマイコンプログラミング(2020年 今さらSTM32ディスカバリ事始め)

 

ARMマイコンを使った電子工作をしたくなったので、大分昔に買ったSTM32ディスカバリの本と基板を引っ張り出して、2020年に手軽に手に入る環境で動かしてみたので、その記録をまとめました。当時買ったのが以下の本とマイコンです。

 

 

 

 

登録簡単なTrueStudioとST-LINK utilityを自分のパソコンにインストールしました。

 

・True Studio

https://www.st.com/ja/development-tools/truestudio.html

 

・STM32 ST-LINK utility

https://www.st.com/ja/development-tools/stsw-link004.html

 

TrueStudioに関しては、後継となる開発環境も出ているようなのですが、STM32 value line Discoveryのプロジェクトを作った時に、この基板にデフォルトで入っているUSER BUTTONを押したときにLEDの点滅方法が変わるというプログラムのもととなるコードが最初からmain.c内に入っていたので、こちらを選びました。

 

また、ST-LINKはバージョンがあり、STM32 value line Discoveryはもっとも初期のバージョンで、後継ソフト(ST-LINK/V2以降のみ対応)では対応していないというのがわかったのも、TrueStudioを選んだ理由です。

⇒この点に関して、TrueStudioでビルドしてマイコンに最初に書き込む際、メッセージがでたのでマイコンに搭載されているST-LINKのファームウェアウェアをアップデートしたのですが、なぜか書き込みができないことが判明(このアップデートがよくなかったのか)したので、結局、マイコンへのプログラムの書き込みはST-LINK Utilityを利用しました。

 

①メニューのファイル→C Projectを選択し、次に立ち上がった画面で適当なプロジェクト名を設定し、Embedded C Projectを選択します。

f:id:tut2020aaa:20210117110934p:plain

f:id:tut2020aaa:20210117111116p:plain

 

②次にターゲットマイコンの選択画面になるので、STM32VL_Discoveryを選択します。

f:id:tut2020aaa:20210117111308p:plain

これであとは特に設定の変更はせず、次へボタンを押していって、最後に終了ボタンを押すと、プロジェクトが作成されます。

 

③main.cのmain関数に無限ループする以下のwhile文があります。

それを以下のように書き換えました。

while (1)

{
 i++;
#ifdef USE_LED
 STM_EVAL_LEDToggle(LED1);

#elif defined USE_STM32_DISCOVERY
 if(0 == STM32vldiscovery_PBGetState(BUTTON_USER))
 {

    //LED4の点灯
  STM32vldiscovery_LEDToggle(LED4);
 }
 else
 {

  //LED4の消灯
  STM32vldiscovery_LEDOff(LED4);
 }
#endif
}

 

これで、USER BUTTONを押してないときはLED4は点灯、押しているときは消灯します。

 

④*1を参照してプロジェクト設定でビルド時にhexファイルが出力されるようにして、*2を参照してST-LINK Utilityを使ってプログラムの書き込みを実行しました。

 

結果は以下の通り、青色のLED(LED4)が、USER BUTTONを押していない状態で点灯するようになりました(写真の赤丸している部分がLED4)。

f:id:tut2020aaa:20210117114334p:plain

USER BUTTONを押すと、LED4は消灯します。

f:id:tut2020aaa:20210117114519p:plain

 

 


<参照>

*1 hexファイルの出力の設定は以下のページを参照しました。

gsmcustomeffects.hatenablog.com

 

*2 STM32 value line DiscoveryはST-LINKの基盤が搭載されているので、USBケーブルで基板をつなげれば専用のデバッガ/プログラマは不要なのですが、hexタイプのファイルをST-LINK utilityを使て書き込まないといけないので、以下のページを参照しました。

tri-s.world.coocan.jp

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

Visual StudioでPython (Formを最短のコードで立ち上げられるのはPythonのどのライブラリか? まとめ)

 

全4回で、PythonGUIライブラリであるTinker, Kivy, PyQt, wxPythonによるFormの立ち上げを試してみました。

結果は以下の通りでした(2021/01/03 現在)。

 

ライブラリ 必要行数
Tkinter 3
Kivy 2
PyQt 11
wxPython 5

 

ライブラリそれぞれに考え方の違いがあるので、一概には言えないですが、この結果をみるに、単純にFormを立ち上げたいだけならKivyが最もよい選択になりそうです。

 

やりたいことが複雑になった時の扱いやすさはまたそれぞれに違った結果が出そうです。

 

*以下にそれぞれのライブラリを試した記事へのリンクを張り付けておきます。

 

 <Tinker>

tut2020aaa.hatenablog.jp

 

<Kivy>

tut2020aaa.hatenablog.jp

 

<PyQt>tut2020aaa.hatenablog.jp

 

<wxPython>

tut2020aaa.hatenablog.jp

 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit)

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Visual StudioPythonのライブラリを追加する方法は以下が参考になります。

docs.microsoft.com

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村