Python関連のことを調べてみた2022年09月21日

Python関連のことを調べてみた2022年09月21日
目次

OCIの監視設定例

## 概要
パブリッククラウド上にシステムを構築した後、運用を行うためには監視方法の検討が必要になります。
今回OCI上VMやサービスに対してシステム監視を設定しました。

## 監視方法
OCIでは様々な監視のための仕組みが用意されています。

– 標準メトリックを使用したモニタリング(標準モニタリング)
– 個別に収集したメトリックを使用したモニタリング(カスタムモニタリング)
– 特定イベントにおいて特定メッセージが出力された場合に検出するイベントサービス(イベント)

今回監視したい項目と対応する監視設定は以下のとおりとなります
– Webサーバ
CPU使用率:標準モニタリング
メモリ使用率:標準モニタリング
Disk使用率: カスタムモニタリング
死活監視: カスタムモニタリング
URL監視 : カスタムモニタリング
バックアップ監視: イベント
– LoadBalancer
外部URL監視: ヘルスチェック->標準モニタリング
– MySQL Database Service(MDS)
サービス監視: カスタムモニタリング

元記事を表示

Pythonで環境別の開発・運用を考える

# はじめに

Python のシステムを開発・運用していく上で、開発・検証・本番と**環境別に違う情報を管理する**ことになると思います。

以前私は、Amazon ECS に Python のシステムを構築する際に、環境別の情報を**環境変数**に設定していました。しかし、開発や運用をしているとやりにくい点が出てきました。

かといって、要件に合いそうなライブラリもなさそうだったので、下記の記事を参考にして環境別設定ファイルの構成を考えてみました。

https://qiita.com/t2kojima/items/64c7e064ea6609915705

※ 一個人の見解ですので必ずしも正解や正攻法ではありません。より良い方法があればお気軽にフィードバック頂ければと思います。

# 課題

Amazon ECS に Python のシステムを構築する際は、OS の**環境変数**を用いて環境別の設定値を取得していました。そして、環境変数の設定は AWS CloudFormation の [AWS::ECS::TaskDefinition – ContainerDefiniti

元記事を表示

Seleniumで使用するドライバのバージョンアップを自動化する

# はじめに
スクレイピングなど何らかの目的でSeleniumを使用している場合は、ドライバのバージョンアップが課題です。

ブラウザのバージョンをあげた場合は、互換性を保つためにドライバのバージョンもあげる必要があるため、保守作業としてドライバのバージョンアップが煩雑になりやすいです。

本記事では、以前書いた[ルーチンワークはPythonにやらせよう Seleniumで勤怠処理を自動化する](https://qiita.com/Brutus/items/caec20b979db6d49a29a)を例に、ドライバのバージョンアップを自動化する方法について記載しています。

## executable_path
本記事の環境についてSeleniumは4.4で、ブラウザはchromeを使用しています。

前提としてSeleniumを使用する場合は、使用するブラウザに対応するドライバを設定する必要があります。
Selenium 4では、[executable_path has been deprecated, please pass in a Service object](https:/

元記事を表示

Pythonでマルチスレッドを実現する

# はじめに
Pythonにおけるマルチスレッド処理について調べて学んだことをまとめました。
Python初学者の参考になれば幸いです。

# マルチスレッド処理とは
複数の処理を並行して走らせることです。IOバウンドな処理の効率化が見込めます。

CPUバウンドな処理の効率化については、マルチスレッドではなくマルチプロセスが適しています。
マルチスレッドとマルチプロセスの違いについては、[こちらの記事](https://qiita.com/Jungle-King/items/1d332a91647a3d996b82)が分かりやすかったので、適宜参照してください。

# マルチスレッド処理を実現するPython標準ライブラリ
Pythonでは、マルチスレッド処理を実現するための標準ライブラリがいくつか用意されています。

## threading
Python2以前からある、マルチスレッドを実現するための標準ライブラリです。
[公式ドキュメント](https://docs.python.org/ja/3/library/threading.html)

使い方
“`Python
im

元記事を表示

SyncTubeでみんなでチャットしながら足踏みオンライン散歩会ができるPGM

SyncTubeでみんなでチャットしながら足踏みオンライン散歩会ができるPGM

SyncTubeでみんなでチャットしながら足踏みオンライン散歩会ができるPGMをpythonで作りました。


githubURL: https://github.com/NanjoMiyako/WalkingWithChats


スクリーンショット
![scnshot1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412430/1cebf126-9919-9575-91c7-ccf23238e2df.png)
(github上にスクリーンショットがあります)


使い方
まずPGMにpytest9.pyに書かれている、g_ConsoleX, g_ConsoleYの部分を
スクリーンショットの①の部分に合わせます

次にコマンドラインからpytest9.pyを以下のコマンドライン引数で呼び出します.

python pytest9.pyのURL 足踏み閾値%(ex:0.5

元記事を表示

ヅカの芸名を自動生成するAIを作る(6):GPT-2編(2)

# これまでのあらすじ

前回は[こちら](https://qiita.com/muto-jo/items/8b03535dec536c68c99e)

GPT-2を用いた宝塚の芸名の自動生成を試みるのに、GPT-2の導入と、ファインチューニング用の学習データの生成まで行なった。
が、いざファインチューニング用のスクリプトを走らせたところエラーが出たところまで。

今回は、エラー対応しながらファインチューニングを実行させるところまでを記載する。

# エラーその1 必要なライブラリが足りてない

これは既に解消してしまったので、実際のエラーメッセージは既にないが、Pythonライブラリのevaluateが見つからないとエラーが出た。
これの対応はシンプルで足りないライブラリをAnaconda Navigatorかpipで入れるだけである。

が、他に足りないライブラリがある可能性もあったため、requirements.txtに記載のあるものをそのバージョン指定に従って入れた。

requirements.txtは下記にある。
transformers/examples/pytorch/

元記事を表示

requests.Sessionの確認

# 目的

requests.Sessionを利用した際に、TCPコネクションを使い回せていることを確認します。

# 構成
FastAPIサーバを2つ立てます。クライアントにはcurlコマンドを利用します。
– server1.py
– クライアントに叩かれるサーバ
– server2.pyを叩くサーバ
– server2.py
– server1に叩かれるサーバ

# ソースコード
## server1.py

“`python
from typing import Union

from fastapi import FastAPI

app = FastAPI()

@app.get(“/”)
def read_root():
return {“Hello”: “World”}

@app.get(“/items/{item_id}”)
def read_item(item_id: int, q: Union[str, None] = None):
return {“item_id”: item_id, “q”: q}

@app.

元記事を表示

自分のMacBook Airに最新のPythonを入れようとした

アイトラッキングがしたかった

が、あろうことか最新の方のPythonが入ってなかったぽいのでインストールしようとした時のメモ。
https://prog-8.com/docs/python-envに従ってやれば普通は問題なさそうだが、いくつかエラーが出て詰まったので記録として。ただちょっと前の話なので記憶が曖昧で、エラー出たのは覚えてるんだけど順序がわからねえので順不同で全部書いときます。
こういう個人ブログとかにたくさん助けられてきてるので、拙いながらも助けになれないかなあと思い執筆しております。

エラー1個目

こんなエラーが出た。

“`
Fatal: You must get working getaddrinfo() function.
or you can specify “–disable-ipv6”.
“`
本当は前後にもうちょい書いてあった気がするけど、忘れた。
slackに投稿されたメッセージを用いて、キーワード抽出・分析をしたい計画~キーワード抽出~

## はじめに
イベント等のアイデア出しをするSlackチャンネルがあるのですが、
投稿されたメッセージを組み合わせて新たなアイデアを創造したいなあ。というわけで。

### slackに投稿されたメッセージを用いて、キーワード抽出・分析をしたい計画
以下の段階で完成させようと思います。
第一弾:[まずは投稿メッセージを取得しよう](https://qiita.com/daisuke_ishii/items/87de04e7bb222f14d183)
第二弾:キーワード抽出をしよう<-now 第三弾:分析・可視化しよう ### 前回のあらすじ slack appからコピペをしてJSON形式に変換することができた! ## 今回の話 キーワード抽出には下記2通りを試しました。 =>[YAKE!](https://github.com/LIAAD/yake)
=>[pke](https://github.com/boudinfl/pke) (python keyphrase extraction)
結論から言うと、pkeの方が相応しいワードを抽出できました。

### YAKE! につい

元記事を表示

【Python】pass と Ellipsis の使い分けを検討する

## はじめに

Pythonを書く上際に、処理を省略・仮実装・抽象化する場合があると思います。
その際に、`pass`文を使うべきか`Ellipsis`を使うべきか検討したいと思います。

※ 本稿は、部内のLTでプレゼンされる内容の忘備録です。

## 環境

– Python 3.10.6

## 結論

:::note info
下記のように使い分けるのが良さそう
`pass`文: 「何も実行しないこと」がその処理として本質的な場合に利用する。
`Ellipsis`: 「未実装な処理」や「コンテナデータ型の拡張表現」として利用する。
:::

## pass

誰もが知っているおなじみの`pass`文です。

> pass はヌル操作 (null operation) です — pass が実行されても、何も起きません。
> pass は、構文法的には文が必要だが、コードとしては何も実行したくない場合のプレースホルダとして有用です。[^1]

公式ドキュメント曰く、下記のように未実装関数の仮置きに使えます。

“`py
def hoge():
pass
`

元記事を表示

heroku上のPython/flask環境を構築し、ローカルに開発環境構築まで

# はじめに
Paasサービスのherokuを使ってwebアプリを構築する機会があり、そのメモ的なもの。
この記事は、Mac上を開発を行う環境とし、herokuを本番環境として扱った例になります。

# 環境
macOS Monterey 12.2.1
homebrew 3.5.10
Python 3.10.6
git 2.31.0

# herokuとは
まずHerokuとはなんですかということですが。。。

Herokuはアプリの構築、提供、監視、スケールに役立つクラウドプラットフォームで、アイデアを出してから運用を開始するまでのプロセスを迅速に進めることが可能です。また、インフラストラクチャの管理の問題からも解放されます。

だそうです。

つまりサーバはherokuが管理し、我々はアプリケーションだけに意識を置くことができる。

残念なのが無料で使える期間がもうすぐ終わるということ。。。

# 前提作業
前提条件は以下
– homebrewインストール済(まだの方は[こちら](https://qiita.com/ukei2021/items/51cdc9fbd53428708f

元記事を表示

これでマスターbit全探索編〜AtCoderを戦うために典型問題を徹底マスターしよう![競プロ解説]〜

# はじめに
初めまして。
普段AtCoderにPythonで参戦している[ハチ](https://twitter.com/oyutaka_jp)です。

今回は、bit全探索について初心者でも一から分かりやすく解説していきたいと思います。

実は僕自身、AtCoder歴は現時点で2ヶ月ほどで、まだまだ初心者です。ですが、初心者だからこそ分かる苦悩や引っ掛かりポイントがあると思います。

そこで、自分と同じようにAtCoder初心者でもこれを読めば「**bit全探索**」について理解できるような記事を書けたらと思います。

# 目次

1. [bit全探索とは](https://qiita.com/drafts/822cafd0f8e6f1c59999/edit#bit%E5%85%A8%E6%8E%A2%E7%B4%A2%E3%81%A8%E3%81%AF)
2. [例題1](https://qiita.com/drafts/822cafd0f8e6f1c59999/edit#%E4%BE%8B%E9%A1%8C1)
3. [例題2](https://qiita.com/drafts

元記事を表示

ローカルファイルにrequestsしてBeautifulsoupを使いたいとき

移動中のWifiない(あるいは貧弱な)環境で思いつきました。
結論はローカルファイルにあるhtmlファイルをopenしてreadするというだけの話です。

下記サンプルを実行するためには、 “http://quotes.toscrape.com/” へあらかじめアクセスして、ブラウザ上でctrl+Sしてhtmlファイルをローカルファイル”Quote Quotes to Scrape.html”へダウンロードしておく必要があります。
また、当然のことながら、ネットワークアクセスがない状態で試すためにLANケーブルを抜くなり、フライトモードにして実行してください。

“`python
import requests
from bs4 import BeautifulSoup

WIFI = False

if WIFI: # Wifiアクセスできるときはインターネットから取得
base_url = “http://quotes.toscrape.com/”
r = requests.get(url).text
else: # Wifiアクセスできないときはローカルフ

元記事を表示

JDLA E資格 2022#2 合格体験記

## はじめに
先日、JDLA(日本ディープラーニング協会)のE資格2022#2に合格しました。今後受験される方のために何か参考になればと思い、合格体験記をまとめることにしました。自分自身の勉強時間、勉強方法などを記しておこうと思います。

## E資格の概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2851632/d4bfa028-ca7b-cdf2-ef5b-047d9109ce91.png)

E資格(JDLA Deep Learning for ENGINEER)はJDLA(日本ディープラーニング協会)が提供する資格であり、「ディープラーニングの理論を理解し、適切な手法を選択して実装する能力や知識を有している」ことを認定するものです。同じくJDLAが実施するG検定の次のステップに位置するような資格になっています。基本情報は以下の通りです。

* 実施概要
* 試験時間:120分
* 知識問題(多肢選択式・100問程度)
* 各地の指定試験会場にて受験

元記事を表示

VSCodeリモートコンテナで、簡単にPythonの環境構築をする方法

# 1. 目的
この記事の目的は、**VSCodeのリモートコンテナでPython環境を構築し、楽に開発・学習を行えるようにすること**です。

この記事を参照するメリットは以下の点があります。
* ローカルPCの環境を汚さない、仮装環境を簡単に構築できる
* VSCodeの拡張機能を仮想環境内で使うことができる

# 2. 事前準備
必要な事前準備は以下のようになります。

## 2-1. VSCodeと拡張機能のインストール
以下のページを参考に、VSCodeと拡張機能をインストールしてください。

https://code.visualstudio.com

必要な拡張機能
* [Remote – Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)

## 2-2. Docker Desktopのインストール
以下のページを参考にDocker Desktopをインストールしてください。

* [Macの方](https://docs.

元記事を表示

ヅカの芸名を自動生成するAIを作る(5):GPT-2編(1)

# これまでのあらすじ

前回は[こちら](https://qiita.com/muto-jo/items/8dffef28b0b78f744b32)

一通り解析を終え、80期以降を学習データにすることに決定。
AIの作成も以下の2パターンを試す。

* GPT-2をファインチューニングする
* 自分でヅカの芸名の解析器や作成をするモデルを作ってみる

今回は、GPT-2をファインチューニングしてみる方法を試す。

なお今回の対応は、下記の記事(とその参照記事)を参照している。

https://qiita.com/m__k/items/36875fedf8ad1842b729

# GPT-2を使う環境の準備

まず前提となる筆者のマシンの環境を再掲する。

macOS Monterey 12.5.1(MacBook Air 2018年モデル。intelプロセッサで当然、GPUなど積んでいない。 ~~Google Colab使え~~ )
Anaconda3-2021.11
Python 3.9.12
conda 4.13.0
pyenvでGPT-2を動作させる専用環境を構築

##

元記事を表示

【Python】初心者がマルバツゲームをつくってみた

## はじめに

Python、Qiita、Markdown初心者ですが勉強に記事を書かせていただきました。
わたしと同じようにひとまずなにかつくりたいと思った人に読んでみてほしいです。

## 読んだ本

[Python 1年生 体験してわかる!会話でまなべる!プログラミングのしくみ 森 巧尚 著](https://www.amazon.co.jp/dp/B0B49MYZ67/ref=cm_sw_r_tw_dp_XJKT1RGJ7ESBYRC23PHW)

[ゲームを作りながら楽しく学べるPythonプログラミング 田中 賢一郎 著](https://www.amazon.co.jp/dp/B06XRQS8PN/ref=cm_sw_r_tw_dp_DY1J5ZHXTJENEYXHQ3T8)

## ゲーム概要

3マスx3マスの盤面に専攻がOを、後攻がXを配置していき先に1列揃えた方の勝ちです。

“`
O | X | O
–+—+–
X | O | X
–+—+–
O | 8 | 9
“`

### 盤面をつくる

“`Python
board = [

元記事を表示

matplotlib.Axes3dで物理っぽい図を作る

Matplotlibの3Dプロットは問題が多くあまり実用的とは思えないのですが,使いたいときもあります.
物理の教科書っぽいきれいな原理図を作れるといいなあと思って試してみました.

## 環境

matplotlib 3.5.1
python 3.10.4
Ubuntu 20.04 on win

## 結果の図

作ってみたのは以下のような図.ポイントは,

– デフォルトになっている薄気味悪い灰色の壁を何とかする
– デフォルトの軸を消して新しい矢印をつける
– 3dのラジアルプロットっぽい棒にカラーマップを付ける
というところ.

![test_axes3d.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2672130/e2be8ac3-e512-1967-bf71-377f7afb0e78.jpeg)

## コード
“`py
import matplotlib as mpl
import matplotlib.pyplot as plt
import mpl_toolkits.mpl

元記事を表示

型情報がないこと由来のエラーに耐えられなかったので、`typeshed`にコントリビュートしたお話

## きっかけ
私が参画しているプロジェクトではCOMをPythonから操作しているスクリプトがあります。

そこで発生するエラーハンドリングを行うため、よく次のようなコードを書いています。

“`py
from _ctypes import COMError

try:

except COMError as e:

“`
ですが、**`_ctypes`には型スタブがなかったので、importした時点でVSCodeのpylance(pyright)がエラーを出していて、それを抑制したとしても`COMError`が`Unknown`扱いになっていました。**
![comerror.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364180/20cab9e9-532e-b1e7-cecd-8bd5ecd03ee0.png)

これによって型チェッカーに例外である情報が伝わっていなかったり、`COMError`があると型チェッカーから警告が出てやりづらい状況でした。

この

元記事を表示

maya python set motionblur

“`Python
from mtoa.core import createOptions

def set_motion_blur(switch):
mtoa.core.createOptions()
if switch == “on”:
cmds.setAttr(“defaultArnoldRenderOptions.motion_blur_enable”, 1)
cmds.setAttr(“defaultArnoldRenderOptions.ignoreMotionBlur” ,1)
cmds.setAttr(“defaultArnoldRenderOptions.range_type”, 0)
cmds.setAttr(“defaultArnoldRenderOptions.motion_frames” ,1)
elif switch == “off”:
cmds.setAttr(“defaultArnoldRenderOptions.motion_blur

元記事を表示

OTHERカテゴリの最新記事