I'm calling a function in Python which I know may stall and force me to restart the script. How do I call the function or what do I wrap it in so that if it takes longer than 5 seconds the script cancels it and does something else?
昨日投稿したTipsの改良版です。通知する部分をハンドラ関数を渡すようにして分離し任意の処理を行えるようにしました。 また、@methaneさんに教えていただいた functools.wrap を使ってみました。このデコレータがついた関数をpaverの@taskにもしてみたのですがヘルプがNoneとなり docstring が表示されなかったのはこれを使っていなかったからのようでした!(functools.wrapを使うとヘルプにdocstringが表示されました) from functools import wraps def on_timeout(limit, handler, hint=None): ''' 指定した実行時間に終了しなかった場合、handlerをhint/limitを引数にして呼び出します @on_timeout(limit=3600, handler=notify_
プロセス系のPythonスクリプトを書いていると、あるプログラムが指定時間以上経過したら即座にプログラムをエラーとみなして終了したい、という処理をしたい時がある。 例えばSeleniumとかでWebチェックをする時、ほっておくといつまでたっても返事がかえってこない。そのため時間制限をもうけて、時間以内は正常、それ以外は異常など処理したい時など。 (お弁当宅配サイトのマイ食の自動テストサービスを作っているときにこの必要性があった) ここではフォークして、今の仕事を子供プロセスに任せる。親プロセスは子プロセスを指定時間までまち、指定時間経過後もまだ子供プロセスが生きていたら殺す。というプログラムの例を載せる。 signal, os, sysなどを使う。 本当はThreadingを使ってSignalをやりとりでいいじゃないか!という人もいるかもしれないけれど今回はそうしなかった。感覚的にThre
インプレスグループで理工学分野の専門書出版事業を手掛ける株式会社近代科学社(本社:東京都新宿区、代表取締役社長:小山透)は、2015年5月15日に、『Python言語によるプログラミング・イントロダクション』出版記念「Python活用セミナー」を開催いたします。 Pythonは初心者にも扱いやすい上に実際の開発にも利用実績を持つ優れた言語として、注目を集めています。このたび近代科学社では『Python言語によるプログラミング・イントロダクション』を刊行いたしました。またこれまでに『あたらしい数理最適化 -Python言語とGuroubiで解く』を刊行しております。今回これらの書籍の監訳、執筆にあたられた久保幹雄先生(東京海洋大学 教授)を中心に、「教育現場におけるPythonの利用」「最適化問題におけるPythonの有効性」をテーマにセミナーを開催いたします。 この機会に本セミナーにご参加
開発者向けのQ&Aウェブサイト「Stack Overflow」は年次調査「Developer Survey」を実施し、157カ国にまたがる2万6086人の開発者から回答を得た。今回その結果が公表され、開発者がどのような人々なのかや、どういったものを好んでいるのかが明らかになった。「『Vim』か『Emacs』か」、また「タブかスペースか」など、議論の的となる問いについても答えを導き出している。統計学的に見た場合、標本には明らかな偏りがあり、これら回答者がどの程度正確に業界の全体像を表現できているのかは知りようもない。しかし、「かつてないほど広範囲の開発者を対象とした調査」として、結果は興味深いものがある。 まず、開発者の平均年齢は28.9歳であり、20歳台の開発者が全体の53%を占めている。40歳以上は10%にすぎない。しかし、米国の開発者の平均年齢は31.6歳であり、これはロシア(26.6
時々Webサイトのソースコードを見るとそこに求人情報であったり、開発時の文句であったり、何らかの秘密のメッセージが埋め込まれていたりします。デザインの綺麗さについソースコードを見てしまうなんて人もいるのではないでしょうか。 そんな方達を期待してWebサイトに仕込んでおきたいのがDom-Animator.jsです。ソースコードの中でアニメーションする、面白いソフトウェアです。 Dom-Animator.jsの使い方 Dom-Animator.jsのサイトをソースコードを見てみましょう。 左上の猿ですが、これが動いています!見ざる聞かざる言わざるの三ザルです。 さらにJavaScriptを見るとこんな感じにアニメーション情報が埋め込まれています。 あえてソースコードの中で動かしても誰も一見しても気づかないわけで、それをあえてやるところに面白さを感じます。つい自分のサイトにも仕込んでみたくなりま
This document is for an old version of Python that is no longer supported. You should upgrade and read the Python documentation for the current stable release. Python HOWTOs¶ Python HOWTOs are documents that cover a single, specific topic, and attempt to cover it fairly completely. Modelled on the Linux Documentation Project’s HOWTO collection, this collection is an effort to foster documentation
ヘッダに書けるのは、Content-Type だけではありません。さまざまな情報を書いて、HTTP クライアントに渡すことができます。 ところが、ヘッダは活用されているどころか、Content-Type: text/html 以外の情報は全く伝えられていないのが実情です。どうかすると、Content-Type: text/html すら書いていなかったりします。 そこで、ここではヘッダの書き方を検討してみます。 CGI-Field CGI/1.1 暫定案を見ると、CGI 出力は、CGI-Field と HTTP-Field の組み合わせになっています。今まで CGI の仕様書はありませんでしたので、HTTP-Field をそのままヘッダとして流用してきました。そういう事情もあって、CGI-Field はそっくり HTTP-Field と重複しているようです。また、適当な HTTP-Fiel
Windows標準の文字コードはShift_JISではなく、Windows-31Jです。 それらの違いやCP932、MS932といった用語もあわせて整理してみましょう。 まずはShift_JIS。 これは日本語の文字集合を符号化する文字符号化方式のうちの一つです。 Microsoftにより、MS-DOSの標準日本語コードとして採用され、CP932という管理番号を与えられるとともに独自の拡張が行われました。 MicrosoftはこのCP932を独自に拡張することを、OEMメーカー(MS-DOSを搭載したパソコンを販売するメーカー)に許していたため、各OEMメーカーごとに異なる拡張が行われました。 その後、MicrosoftはWindows3.1の日本語版を出すにあたり、OEMメーカーにCP932の独自拡張を許すという方針を撤回し、当時、日本のパソコン市場で特に大きなシェアを持っていたIBMと
Note 本稿を読む前に Python 本体の unittest を理解しておくべし。 本稿において、利用した各パッケージのバージョンは次のとおり。 Python 2.6.6, 2.7.3, 3.4.1 Nose 1.0.0, 1.1.2, 1.3.3 当ノートでは --verbosity オプションを多用しているが、 単にノートを見返すときのわかりやすさを優先するためだけによる。 実用時には省略することのほうが普通。 目的¶ Nose 自身は、その目的をドキュメントの冒頭に <nose is nicer testing for python> や <nose extends unittest to make testing easier> と謳っている。 さらに、プログラムの狙いを次の 4 点に絞っている。
This document is for an old version of Python that is no longer supported. You should upgrade and read the Python documentation for the current stable release. Basic Logging Tutorial¶ Logging is a means of tracking events that happen when some software runs. The software’s developer adds logging calls to their code to indicate that certain events have occurred. An event is described by a descripti
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに Python入門系の記事では概して、Pythonのロギング機能の紹介で最初にlogging.debug()といったloggingモジュール付属の関数を呼ぶ方法を案内しています。 Python本家が提供するloggingの「基本チュートリアル」でもこの点で大差ありません。Python本家の基本チュートリアルでは、print()関数を使用する方法もロギングの手段として有効であるとし、タスクに応じてprint()やlogging.debug()を使いわけよう、という流れで記述されています。 コマンドラインスクリプトやプログラムで普通
僕は、プログラムをする上で変数や関数に良い名前を付けるのはとても重要と考えています。 というのも、良い名前を付ければ、それだけでそのコードがしたいことの説明になり、コメントと同等の働きをすることもあるからです。 自分がちゃんとそれをできているのかはさておき、僕は普段から、できれば読みやすくて分かりやすい名前を付けたいと思っています。他の人も読むコードであれば、できればプログラムでよく使われるような単語を利用して書いた方がより分かりやすいです。 ただ、よい名前を考えるのって、ちょっと面倒くさいんですよね。僕はこれまで、英語の辞書を利用して、考えたりしていたのですが、「何か、プログラムでよく使われる単語をまとめたものはないか?」と探したら、ドンピシャのものがいくつかあったので、それらをまとめて以下で紹介します。 photo by Michael Coté codic codic – デベロッパ
ソフトウェア開発者の間では一般的に、ディスクアクセスを避けてできるだけメモリー上で処理することが実行時間の短縮につながると考えられているが、これに逆行する研究結果をカナダ・カルガリー大学とブリティッシュコロンビア大学の研究チームが発表した(論文: PDF、 ITworldの記事、 本家/.)。 実験はJavaおよびPythonを使い、WindowsおよびLinux上で1バイト、10バイト、1,000バイトの文字列をそれぞれ100万バイトになるまで繰り返し結合し、結果をディスクに書き込むというもの。比較対象としては同じく1バイト、10バイト、1,000バイトの文字列を結合せずに計100万バイトになるまで直接ディスクに書き込んでいる。また、同じコードにより100万バイトの文字列を処理する実験も行っている。 その結果、Javaで1バイトの文字列を結合処理してからディスクに書き込んだ場合、ディスク
Source code: Lib/hashlib.py This module implements a common interface to many different secure hash and message digest algorithms. Included are the FIPS secure hash algorithms SHA1, SHA224, SHA256, SHA384, and SHA512 (defined in FIPS 180-2) as well as RSA’s MD5 algorithm (defined in Internet RFC 1321). The terms secure hash and message digest are interchangeable. Older algorithms were called messa
2. 自己紹介 • ID: gnu (発音: /núː/, /gnúː/ ) • KMC1回生 • 副会長 • KMC的活動 • Unity2014 • あんまし活動できてない…
チームで作業する同じリポジトリの中で Pull Request を送り合うのではなく、オープンソースプロジェクトに外部から PR がやってくる場合の話です。 最近のフロー 送られてきた PR に対しては、大まかには仕様の話、実装方針の話、具体的な実装の話を詰めながらマージできるように持っていくわけだけれど、それがほとんど満足いく状態になっていてマージしたいと思うタイミングになっても、変数の名前付けだとか、ちょっとした処理の書き方だとかで、相手にお願いするよりは自分で手を加えてからマージした方が手っ取り早いことがある。そういう時は PR 元のブランチを手元にチェックアウトして、そのブランチを自分の変更で進めた上で master にマージするようにすると、push 時に PR も閉じられて便利です。 motemen/lgtm.sh#1 の例。分かりにくいれど、PR にさらに 1 コミット足して
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く