Python関連のことを調べてみた2020年04月17日

Python関連のことを調べてみた2020年04月17日
目次

lockとRlock

“`py
import logging
import threading
import time

logging.basicConfig(level=logging.DEBUG, format=’%(threadName)s: %(message)s’)

def worker1(d, lock):
logging.debug(‘start’)
with lock:
i = d[‘x’]
time.sleep(5)
d[‘x’] = i + 1
logging.debug(d)
with lock:
d[‘x’] = i + 1
logging.debug(‘end’)

def worker2(d, lock):
logging.debug(‘start’)
lock.acquire()
i = d[‘x’]
d[‘x’] = i + 1
logging.debug(d)
lock.release()

元記事を表示

遺伝的アルゴリズム(GA)とそのライブラリ(vcopt)で巡回セールスマン問題を解く

## :anchor: この記事の目的

本記事では、数理最適化問題でよく出てくる巡回セールスマン問題の簡単な例題について、遺伝的アルゴリズム(Genetic Algorithm, GA)を応用したソルバーであるPythonライブラリの「vcopt」を使用し、解を探ってみます。また、vcoptについて「巡回セールスマン問題に代表される順序の大域最適化」の解き方及び使い方を見てみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/915313dc-be6b-64a6-c219-2960b074e49f.png)

## :anchor: vcoptって何?

ビネット&クラリティ合同会社( https://vigne-cla.com/ )により開発された、遺伝的アルゴリズム(Genetic Algorithm, GA)を使用した組合せ最適化ソルバーです。Python言語で書かれています。同ソルバーには様々な機能が実装されていますが、今回は順序(並び替え)の大域最適化を求め

元記事を表示

坂道グループの公式HPからメンバー画像をスクレイピングする

## 目標

このように、`メンバー名.jpg`の名前を付けて画像ファイル(画像のパス)を保存すること。
※今回は保存先を[cloudinary](https://cloudinary.com/)にしています。実行する際は何かしらのストレージや、ローカルに保存先を変更して下さい。

![image](https://user-images.githubusercontent.com/52794486/79519194-1ee11400-808e-11ea-95f3-e4acaff57e4b.png)

## 最終的なコード

それぞれの公式HPのhtmlが異なっていたので、微妙にコードが異なります。

### 乃木坂

“`python:get_ng_images.py
from bs4 import BeautifulSoup
import urllib
import cloudinary
import cloudinary.uploader

import os

cloudinary.config(
cloud_name = os.environ.get(“clou

元記事を表示

python正規表現で文字列が時刻かどうかを判定する

正規表現で0:00から23:59までを時刻として判定したい。
時、分ともに一桁の時と二桁の時に対応したい。

以下だと、29:59も時刻と判定してしまう。

“` python
re.match(r'([0-2]?[0-9]):([0-5]?[0-9])’, ’29:59′)

“`

以下であれば期待通りの動作だった。

“` python
re.match(r'([0-1]?[0-9]|2[0-3]):([0-5]?[0-9])’, ’23:59′)

re.match(r'([0-1]?[0-9]|2[0-3]):([0-5]?[0-9])’, ’24:00′)
“`

もし他に良い方法があれば是非コメント下さい!

元記事を表示

世にも奇妙で恐ろしいPythonのエラーの話

注)importの仕様には注意しましょうねという話で、初級者向けの内容です。

# Pythonでとある機能のテストをしていた時のこと。

昨日は動いていた次のサンプルコードが突然エラーを出すようになりました。
環境はpyenv+pipenv+python3.7+Google Cloud SDK
(Google Firestoreの書き込みを行うコードです)

“`Python:insert.py
from google.cloud import firestore

db = firestore.Client()
db.collection(u’users’).document().set({
u’first’: u’oda’,
u’last’: u’nobunaga’,
u’born’: 1534
})
“`

エラーの内容は次のとおり

“`shell
>> pipenv run insert
Loading .env environment variables…
Traceback (most recent call last):
File

元記事を表示

FlaskでAddress already in use errorとなった日

##対処
以下コマンドを入力

ps -fA | grep python

出てきたプロセスをkillする

### SUCCESS!!

###参考

元記事を表示

Twitter API の Search API で”next_results”パラメータが使えない!?その原因と対処法

Twitter API の [Search API](https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets) を用いてツイート収集をしていた際にハマりました!
意外なところに落とし穴が・・・

# Twitter の Search API について
今回は、ツイートを取得する Search API を利用しました。
Search API の仕様について簡単にまとめます。

Search APIには3種類のAPIがあります。
– Standard Search API (無料)
– Premium Search API (有料)
– Enterprise Search API (有料)

今回は、無料で使えるStandard Search APIを利用します。

### Standard Search API の特徴
– 無料で利用可能
– リクエスト回数に制限あり
– user auth(OAuth1)で認証する場合 180リクエスト/15分
– app

元記事を表示

プログラミング言語の学ぶ順番について(初心者から中級者へ)後編

#追記
記事に書き忘れていましたが、複数の言語を中途半端にやるより、一つの言語を極めれる方がいいと思います。
ただその言語が自分に合わない(僕の場合はCが生理的にきつかった) 場合は他の言語へ移った方がいいとも思うのです。

#目次
大前提と学ぶ意義と大まかな学ぶ流れ
最初の一歩:Javascript
飛躍の一歩:Python
最初のコンパイル言語:C#
最後の難関、最強言語:C言語

http://www.minekawada.com/program-lang-order.html

元記事を表示

pythonとopencvの環境構築

今回は私がおすすめするpythonとopencvの環境を説明・解説していきます。
ぜひ皆さんも参考にしてみてください。
#動機
環境構築してみたら、意外と大変だったのでここに書いておきます。
#参考にしたサイト
[https://prog-8.com/docs/python-env](https://prog-8.com/docs/python-env)
[https://www.sejuku.net/blog/54272](https://www.sejuku.net/blog/54272)
#開発環境
MacOS Catalina
#スタート
###brewをインストール
[Homebrew公式ホームページ](https://brew.sh/index_ja)
ここに書いてあるスクリプトをターミナルに貼り付けて実行するとHomebrewがインストールされます。
###pyenvをインストール
“`python
brew install pyenv
“`
上を実行するとpyenvがインストールされます。
###pythonをインストール
pythonをインストールする前にやってお

元記事を表示

AutoGluonをGoogle Colab GPU環境で実行する

## AutoGluonとは
mxnet製のAuto MLライブラリ.
https://autogluon.mxnet.io/

## Setup on Linux
公式ページより

“`sh
# Here we assume CUDA 10.0 is installed. You should change the number
# according to your own CUDA version (e.g. mxnet-cu101 for CUDA 10.1).
pip install –upgrade mxnet-cu100
pip install autogluon
“`

## Google Colabで実行
“`sh
pip install –upgrade mxnet-cu100
pip install autogluon
from autogluon import TabularPrediction as task
“`
> ImportError Traceback (most recent

元記事を表示

Error: 500 (Internal Server Error) Jupyter lab

# ?!?!?!?!?
“`python:エラー文
Error communicating with server extension. Consult the documentation for how to ensure that it is enabled.

Reason given:

Error: 500 (Internal Server Error)
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431977/b69c48b3-5d17-c377-f724-3b8d7984bc73.png)

# あらまし
前回の記事
https://qiita.com/lindq_yu/items/23fedb6aae0d930f03d4

大学からMacを借りお気に入りの開発環境である `jupyterlab`を導入していました。
`jupyterlab`については、https://qiita.com/kirikei/items/a1639954ce5ccaf7ac3c

元記事を表示

Pythonでのチームアプリ開発に参画するための学習履歴~Djangoチュートリアル4~

# はじめに

[前回](https://qiita.com/shitikakei/items/753ba603b5bca272c69c) から引き続きDjangoチュートリアルを進めていきます。
今回はDjangoを使う上で重要なポイントであるクラスベースビューについてです。

# フォームについて

“`html

{{ question.question_text }}

{% if error_message %}

{{ error_message }}

{% endif %}

{% csrf_token %}
{% for choice in question.choice_set.all %}

元記事を表示

Diagrams on Dockerでシステム構成図を書いてみた

「[Diagramsを使ってPythonでシステム構成図を描く | Developers.IO](https://dev.classmethod.jp/articles/diagrams-introduction/)」の記事をみて良さそうだなーと思ったのだけどPython環境がなかったのでDockerで試してみた話。

# Dockerイメージを準備する
[公式ドキュメント](https://diagrams.mingrammer.com/docs/getting-started/installation)に「`pip`で`diagrams`をインストールせよ、`Graphviz`もインストールしておけ」と書かれているのでそれにしたがってDockerfileを作成。

“`dockerfile:Dockerfile
FROM python:latest
WORKDIR /app
RUN apt update && \
apt install -y python3-pygraphviz && \
pip install diagrams
“`

ビルドする。あとで実行

元記事を表示

【Actoder】初中級者が解くべき過去問精選 100 問を解いてみた【Part1/22】

**目指せ水色コーダー!!!!!!**

ということで、
[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】](
https://qiita.com/e869120/items/eb50fdaece12be418faa#2-3-%E5%88%86%E9%87%8E%E5%88%A5%E5%88%9D%E4%B8%AD%E7%B4%9A%E8%80%85%E3%81%8C%E8%A7%A3%E3%81%8F%E3%81%B9%E3%81%8D%E9%81%8E%E5%8E%BB%E5%95%8F%E7%B2%BE%E9%81%B8-100-%E5%95%8F)(@e869120さん)
>
AtCoder で水色コーダー、つまりレーティング 1200 を少ない問題数で達成するために、茶色コーダー・緑コーダーにとって適切な教育的良問を 100 問集めました。

こちらの記事の`初中級者が解くべき過去問精選 100 問`
を**Python**で解いていきます!
@e869120さんに感謝!!!!!!

#記念すべき「Part1」〜普通の全列挙

元記事を表示

Pythonスクリプトをパラメトリックに計算させるためのドライバースクリプト

# これはなに

自作のTimerライブラリーの誤差を測定するために作成した、ドライバースクリプトです。
ある`python`スクリプトを、異なる条件で計算させるためのドライバーツールです。どのように表現してよいかわかりませんでしたが、`WebDriver`をイメージして、ドライバーと表現しました。
`Python`スクリプトをドライブするための、ドライバースクリプトという感じです。

# ドライバースクリプト

“`py:python
from timer import Timer

def main():
seconds = 5
interval_set = [0.01,0.025,0.05,0.1,0.15,0.2,0.25,0.5,0.75,1,2,2.5,3,3.5,4,4.5]

num = len(interval_set) + 1

for case in range(1,num):
interval = interval_set[case-1]
timer = Timer(seconds, interv

元記事を表示

Jupyter上で複数のカーネルを選択可能にする方法

悪戦苦闘したのでメモがわりに。

# 概要
Jupyter上で複数のカーネルを使用したい。
例えば
– python2.7と3.6
– Anacondaの仮想環境1と仮想環境2
のような状況を想定しています。

![output.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212428/37e30e6e-b4a7-5855-efe2-b753249fd5f9.gif)

このような感じでカーネルを変更できるようになります。

# 手順
– Anacondaで仮想環境を構築
– IPythonのカーネルに追加

という方法で問題を解決します。

ここではpython2.7と3.6のカーネルを追加する例を用いて、順番に説明していきます。なお、Jupyterについては既にAnacondaをインストールした際に導入されているものとします。

## 仮想環境を作る
まずそれぞれの仮想環境を作成、その際に“`ipykernel“`もインストールします。

– 仮想環境1

“`python2.7
conda

元記事を表示

言語処理100本ノック 2020【第一章 解答】

言語処理100本ノックの2020バージョンが公開されましたね。

https://nlp100.github.io/ja/

この記事では、参照しやすいように淡々と解答を貼っていきます。
解説は別の記事に書いています。

https://kakedashi-engineer.appspot.com/2020/04/15/nlp100-00-09/

# 00. 文字列の逆順

“`python
s = ‘stressed’
print (s[::-1])
“`

# 01. 「パタトクカシーー」
“`python
s = ‘パタトクカシーー’
print (s[::2])
“`

# 02. 「パトカー」+「タクシー」=「パタトクカシーー」
“`python
s1 = ‘パトカー’
s2 = ‘タクシー’
print (”.join([a+b for a,b in zip(s1,s2)]))
“`

# 03. 円周率
“`python
s = “Now I need a drink, alcoholic of course, after the heavy lec

元記事を表示

Pythonで毎日AtCoder #38

### はじめに
[前回](https://qiita.com/taxfree_python/items/1d13ec564581a927a87f)
今日のよるかつの問題を解きます。

### A問題
[問題](https://atcoder.jp/contests/abc089/tasks/abc089_b)

**考えたこと**
setに入れてlenするだけ

“`python
n = int(input())
s = set(input().split())

if len(s) == 4:
print(‘Four’)
else:
print(‘Three’)
“`

### B問題
[問題](https://atcoder.jp/contests/abc075/tasks/abc075_b)

**考えたこと**
ちょっと前にやりました。全てのマスに隣接している全てのマスを調べる

“`python
h, w = map(int,input().split())
s = [input() for _ in range(h)]

g = [[]*w for

元記事を表示

CloudFormationでECSへSSMから機密情報の受け渡しをする

# Infomation Source
ちょっと前のリリースですが1年経ってないので一応どういうアップデートか書いておきます

[CloudFormationリリース一覧 2019/6/13 リリースの機能](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/ReleaseHistory.html)

> AWS::ECS::TaskDefinition
ContainerDefinition プロパティタイプでは、次のプロパティを使用できます。
– Secrets プロパティを使用して、コンテナに渡すシークレットを指定します。
Tags プロパティを使用して、メタデータを分類して整理しやすくするために、タスク定義に適用します。

# What’s new?

ECSのタスク定義で、機密情報をSecrets Manager secretやSSM Parameter Storeから取得する方法のアップデート

## Before

JSONやWebコンソールからのみ設定可能だった

## After

元記事を表示

matplotlibの基本操作をJupyter Labで書いてみた

## この記事はかめ(@usdatascientist)さんのブログ(https://datawokagaku.com/python_for_ds_summary/) に書かれているmatplotlibの基本操作を実際にJupyter Labを用いてコーディングしてみた、という記事です。

## matplotlibの基本操作まとめ

## 第20回

“`python
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
“`

“`python
x = np.linspace(-3, 3, 10)
y = np.exp(x)
print(x)
print(y)
“`

[-3. -2.33333333 -1.66666667 -1. -0.33333333 0.33333333
1. 1.66666667 2.33333333 3. ]
[ 0.04978707 0.09697197

元記事を表示

OTHERカテゴリの最新記事