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

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

Pythonで作成したSQLをOracleに投げてマルチコアで並列処理させた。

PythonでOracleにSQLを発行しているが、1コアしか使っていない模様…お手軽にSQLをマルチコアで並列処理させて、処理速度を向上できる方法はないものかと調査してみた。

結果的に半日ぐらいかけて発見&実装に成功したので共有したいと思う。

実現手法としては以下の通りです。
①Oracle 19C Enterprise EditionではSQLにヒントを入れると可能
  →今回はStandard Editionを使っているので使用不可
②Oracle 19C Standard EditionではPL/SQLにて実現可能であることを発見
③Pythonから無名PL/SQLを発行して並列処理に成功

※尚、単語などに誤りがあればご指摘いただければ嬉しい所存です。

# ミッション的なもの
使っている言語はPython3、DBはOracle 19C Standard Edition。

INSERT~SELECT文でデータを登録しているシンプルな処理。
SQLは「テーブルB」のある条件に合致するデータを「テーブルA」に登録するだけ。

カーソルでぐるぐるループする様な難しい処理は無し

元記事を表示

AtCoder Problems | ABC261 A.Intersection

## ① 問題
[こちら](https://kenkoooo.com/atcoder/#/table/)でAtCoder上で出題されたコンテストの問題が集大成されています。
今回解いた問題は[こちら](https://atcoder.jp/contests/abc262/tasks/abc262_a)。

## ② 解答
“`262A.py
Y = int(input())
2000 <= Y <= 3000

元記事を表示

Pushbullet + websocketsでリアルタイムに通知を受け取る

## 前提知識
### Pushbulletとは
複数デバイス間(PC・スマートフォン・タブレットetc)で情報を共有するためのアプリ。
Androidを使っている場合、端末間での通知のミラーリングに対応しています。

https://www.pushbullet.com/

### websocketとは

ざっくり言うとリアルタイム通信のためのプロトコルです。
こちらに詳しいです。

https://qiita.com/chihiro/items/9d280704c6eff8603389

## やったこと
Android端末上の通知を、Pushbullet APIを介してPythonスクリプトで取得します。
リアルタイムの通信手段としてwebsocketを使用するので、Pythonのライブラリ「websockets」を利用していきます。

https://websockets.readthedocs.io/en/stable/index.html

## サンプルコード

“`python
import asyncio
import websockets
import json

元記事を表示

ABC262 A~C問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder

ABC262(AtCoder Beginner Contest 262) A~C問題の解説記事です。
灰色~茶色コーダーの方向けに解説しています。

その他のABC解説、動画などは以下です。

更新時はツイッターにて通知します。

https://qiita.com/sano192/items/54accd04df62242b70f0

# A – World Cup Dif:8

https://atcoder.jp/contests/abc262/tasks/abc262_a

スポーツ大会は4年に1回必ず開催されます。
よって
・Yを4で割った余りが2→西暦Y年に開催
・(Y+1)を4で割った余りが2→西暦(Y+1)年に開催
・(Y+2)を4で割った余りが2→西暦(Y+2)年に開催
・(Y+3)を4で割った余りが2→西暦(Y+3)年に開催
と判定しましょう。

Yを4で割った余りはY%4で計算できます。
判定にはifを使います。

入力の受け取り、出力がわからない方は以下の記事を参考にしてください。

https://qi

元記事を表示

テスト投稿

# テスト
テスト投稿です。
これからたくさん書いていきます。

~~~python
print(‘hello world’)
~~~

元記事を表示

DMX制御MP3再生Raspberry-Py

## タッチパネルGUI付きDMX512入力照明同期用MP3再生器製作(2017年)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378482/e96e3b24-dd0d-add1-8d89-7ad6b77194bd.png)

### DMX512信号はSTM32-Mbedを使いUSB接続( ttyACM0 )でコマンドをRaspberry-Pyに送りました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378482/ef138fce-0e0b-f9c8-c47e-47bc7d2d6f5f.png)

python プログラムソース 例
“`python
#/usr/bin/env python

import serial
import time
import pygame.mixer
import pygame, Buttons
import subprocess
from

元記事を表示

[Python] jupyter notebookでplt.imshow()時にkernel deadとなる場合

jupyter notebook上でplt.imshow()を実行したときに以下の画面のようになった。
“`
Kernel Restarting
The kernel appears to have died. It will restart automatically.
“`
![スクリーンショット 2022-08-05 172627.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/594896/91f27f82-96a8-3144-fc35-31262484db95.png)

以下を入れると解決した。
“`python
import os
os.environ[‘KMP_DUPLICATE_LIB_OK’]=’True’
“`

元記事を表示

Pythonでsnscrapeを用いたツイート抽出

snscrapeは個人のAPIキーがなくても自由にSNSをスクレイピングできます。
詳しくはこちら:https://github.com/JustAnotherArchivist/snscrape

今回はsnscrapeを使って、Twitterから時間、キーワード、いいね数、ツイートの個数を指定して、スクレイピングしてみました。

# 開発環境
* M1 Mac
* python3.8
* pandas

# snscrapeのインストール
“`python
pip3 install snscrape
“`

# 実装
“`python
# 必要なライブラリをインポート
import snscrape.modules.twitter as sntwitter
import pandas as pd

# ツイートの個数設定
maxTweets = 1000
# ツイート検索するキーワード
keyword = ‘新年’

df=[]
cols=pd.DataFrame([[‘id’,’date’,’tweet’,’likeCount’]])
cols.to_csv(‘tweet.

元記事を表示

APLpyに頼らず,Astropyのみを使ったFITSのプロットを極めたい

# Astropyとは

天文でよく用いられるFITSファイルを読み書きするためのパッケージ (https://www.astropy.org).

# なぜ極めたいのか

APLpy (https://aplpy.github.io) を用いてよくプロットを作成していたが,どうにも,macOSの更新やARMアーキテクチャに更新が追いついていないようなので,APLpyに頼りきりも良くないなと思ったことが主な要因.同じようなことを下の記事でも書いた.

https://qiita.com/R1ngNebula/items/a2b7c6b1f239fe62bb74

正確にはAPLpyが悪いわけではなく,APLpyが依存している別のパッケージの更新が間に合っていない様子.PyPI (https://pypi.org/project/aplpy/) を見る限り,2022年にもAPLpyはリリースされている.そんなこんなでこれまではPyenvでギリギリAPLpyが使用できていた3.6.15をインストールし,APLpyを使用していた.

しかし先日,M2のMacBook Airを購入し,環境

元記事を表示

UbuntuでPythonを使う前にやること

OS: Ubuntu22.04
Python: 3.8.13

1 インストール
インストールは日本語で使いたい場合であっても英語で行う.
フォルダ名をつけ直す手間が省ける.

2 ソフトウエア
Chrome VSCodeなど必要なソフトウエアをインストールする.

https://www.google.com/chrome/
https://code.visualstudio.com/

3 作業ディレクトリの作成
任意の場所に作成する
pyenvで設定する際に用いる

4 Pythonのインストール
pipのインストール
“`
sudo apt-get -y install python3-pip
“`

今回はPyenv+Pipenvで環境整理を行う
pyenvのインストール
https://qiita.com/neruoneru/items/1107bcdca7fa43de673d

必要なバージョンのPythonをインストールしておく.
上記サイトの後に
“`
cd /$自分の作成した作業ディレクトリのパス
pyenv local 3.8.6
python3 –ver

元記事を表示

【Django】ページをPDF出力する【Python】

# 初めに
本記事はDjangoで作成されたWebアプリケーションのページを、pdfkitというライブラリで出力する記事の目次です。
一番簡単な出力方法からオプションの指定、障害発生とその対策までいくつかの記事にまとめています。
これらを参考にしてページをpdf化させましょう!

# 環境
|名称 |バージョン |
|—|—|
|Python |3.10.4 |
|Django |4.0.6 |
|pdfkit |1.0.0 |

# 基本編
[【Django】ページをPDF出力する(基本)【Python】](https://qiita.com/nagisa_O/items/3eaaa18d68468e8de7e5)

# 応用編
[【Django】ページをPDF出力する(オプション)【Python】](https://qiita.com/nagisa_O/items/59be49e513cac1c2546d)

# セッション編
[【Django】ページをPDF出力する(セッション)【Python】](https://qiita.com/nagisa_O/item

元記事を表示

python dict sort by val

“`
myDict = dict(sorted(myDict.items(), key=lambda item: item[1], reverse=True))
“`

元記事を表示

ワイ「Pythonの勉強したいなァ・・・Djangoってのがあるんか」

# 環境情報

– MacBook Air (Monterey)
– Docker Compose version v2.6.1

## 導入

ワイ「なんや最近Next.jsしか触ってへんし別の言語使いたいなぁ」

ワイ「せや!昔Bot作ったことあるしPython触ったろ!」

ワイ「ほ〜ん、Djangoってのを使ってwebアプリも作れるんやな。ほなやってみるか」

## 環境構築

ワイ「ローカルに環境構築するん嫌やしな〜docker使うか〜」

ワイ「お、ええのあるやん!」

[クィックスタート: Compose と Django](https://docs.docker.jp/compose/django.html)

ワイ「適当にディレクトリ作って、と。まずは`Dockerfile`からやな」

“`dockerfile:Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r req

元記事を表示

[sphinx] WARNING Inline interpreted text or phrase reference start-string without end-string.

# 最初に

以下の環境で実施

|環境|詳細|
|—|—|
|OS|windows11|
|言語|python|
|sphinx|v5.1.1|

Pythonでの自作モジュールのdocを以下で作成
_dirは絶対パスを入れている

“`
sphinx-apidoc -f -o source_dir module_dir
sphinx-build source_dir build_dir
“`

# エラー

記事タイトルのエラーが発生。
“`
WARNING Inline interpreted text or phrase reference start-string without end-string.
“`

# 原因

原因は下記の記事を参照して推定した。
恐らく、rst記載の方法として、「“」で囲むべき文字列が適切でないと思われる。
apidocで自動生成しているので、rst自体は解読できないので確定できなかった。

https://techwriter.documatt.com/sphinx-errors/5-inline-literal-start

元記事を表示

Raspberry-Py ロボットカー製作Go学習

### 2020 64歳の誕生日にスキルアップ電子工作始ました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378482/bac97163-ee47-4d73-528d-f13c86dab167.png)
### メーカーサイト資料

Visit our online store to purchase this product ☛ http://freenove.com/store
Download tutorial and code for this kit ☛ http://freenove.com/fnk0043

### Go学習も進めながらAIも進めました 
https://www.udemy.com/course/python-drone/

https://www.udemy.com/course/go-drone/

![image.png](https://qiita-imag

元記事を表示

Pythonでスプレッドシートを操作したい!

# はじめに
業務でPython(JupyterLab)を使用するために
一からインストール、設定をする必要があり
ほぼテキストだけの設定手順書を渡されて ?(゜-゜)? となったので
ひとまず最低限使える環境を作るためにやったことを
できる限り簡単にまとめてみました。

※最低限動く を目標にしているので用語の解説などは省略しています

Python始めてみたいけど・・・ とか
とりあえず自分で環境作ってみたい! とか
そういう方の参考になれば幸いです。

# 環境
Windows 10 Pro
Python 3.9.0

## やりたいこと
・Python(JupyterLab)でスプレッドシートの編集ができる環境の構築

最終的には以下
・特定のサイトからリンクのテキストとURLを取得する
・Googleスプレッドシートの操作(主に書き込み)

# 環境構築
## Pythonのインストール
### 1.インストーラーをダウンロード
[リンク先](https://www.python.org/downloads/windows/)から、必要なバージョンのインストーラーをダウンロ

元記事を表示

ガウス過程 from Scratch Non-Gaussianな尤度によるガウス過程

今までに執筆した「[ガウス過程 from Scratch](https://qiita.com/meltyyyyy/items/8440849532cd55da1e45)」と「[ガウス過程 from Scratch MCMCと勾配法によるハイパーパラメータ最適化](https://qiita.com/meltyyyyy/items/5a058ecc81e010876a39)」、「[ガウス過程 from Scratch コレスキー分解による高速化](https://qiita.com/meltyyyyy/items/44e2f270be72943086f3)」では、 **ガウス過程(Gaussian Process)** をゼロから実装しハイパーパラメータの最適化や計算の高速化を行いました。

通常のガウス過程では、関数 $\mathbf{f}$ と出力 $\mathbf{y}$ の関係 $P(\mathbf{y}|\mathbf{f})$ がガウス分布 $\mathbb{N}(\mathbf{f},\sigma^2\mathbf{I})$
に従うという前提のもと、出力を計算していまし

元記事を表示

VSCode PythonのSuggestサジェストが重複duplicate表示する時の解決方法

# 環境
OS: Windows10
VSCode : バージョン1.69.2
LSP: Pylance
Notebook使用

# この症状が出るシーン
.pyファイルと.ipynbファイルを同時に編集しているとき
.pyファイルのみ、.ipynbファイルのみのときは問題ない。

# 解決方法

settings.jsonに`”python.pylanceLspNotebooksEnabled”: true`と記述してnotebookのLSPをpylanceにすることを明示する。

# ※追記

.pyファイル上のsuggestの重複はなくなったものの、.ipynbファイル上のsuggestの重複がなくならない。

Microsoftの`Pylance`からPython標準の`jedi`に変更することにした。

settings.jsonへ`”python.languageServer”: “Jedi”,`を記述

元記事を表示

マルチステージビルドでPythonのコンテナイメージを軽量にする

仕事でPython/Djgnagoを使ってWEBアプリを開発し、作成したアプリはDockerコンテナにして運用しています。インストールするPythonのライブラリが150個ぐらいあるので、コンテナイメージが大きくなってアップロードやダウンロードに時間がかかっていました。

何とかコンテナイメージを軽くするために、マルチステージビルドを実施(ついでにAWS ECRのイメージスキャンも実施)し、コンテナイメージの容量(と脆弱性)がどのぐらい削減できるのかをそれぞれのパターンで検証しました。

## 修正前
“`
FROM python:3.7.13-bullseye

ENV PYTHONUNBUFFERED 1
ENV PIPENV_TIMEOUT 600

# githubから直接pipインストールするため、gitインストール
RUN apt-get -y update && \
apt-get -y upgrade && \
apt-get -y dist-upgrade && \
apt-get -y install gcc git mecab libm

元記事を表示

オフライン環境で pip install したい

社内・学内の計算機サーバーで`pip install`したいけどインターネットに接続していない…
ということが、ちょくちょくあります。

私も、最初結構はまってしまったので備忘録として残しておきます。

# 環境
“`
サーバー : Ubuntu 18.04(sshで接続), python3: 3.6.9
PC : Windows10 + WSL2(Ubuntu20.04)
“`
# pip download
公式リファレンス → https://pip.pypa.io/en/stable/cli/pip_download/
`pip download` でパッケージファイルをダウンロードして保存できます。

例えば、
“`bash:cmd
cd ~
mkdir src
cd ~/src
pip download numpy
pip install ./*
“`
とでもすれば、numpyがインストールできます(多分)。
ただし、単純に `pip download` すると今回の場合 WSL2(Ubuntu20.04) 用のパッケージがダウンロードされてしまうので、そのままs

元記事を表示

OTHERカテゴリの最新記事