🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1571閲覧

atomでtime.sleepが実行されない。JupyterLab(Notebook)で実行できるのはなぜでしょうか。

upacara

総合スコア3

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/02/11 15:19

私は「IDLE、pythonのshellは対話型、inputメソッドを使えるからatomと違う」という程度のことしか理解していない初心者ですが、興味を持って質問させてもらいました。これから学習を進めるヒントをいただければうれしいです。

よろしくお願いします。

mac, atom, python3を使っています。

質問は
「JupyterNotebookで実行できて、atomで実行できない(挙動がコマンド通りに実行されない)メソッドがあるのか」
「JupyterNotebookとatomの違いは何か」です。

以下、この質問に至った経緯です。
========

カウントダウンをするコードを作ってみたかったので、time.sleepの挙動を調べるテストとして次のコードを書きました。(スクリプト、コマンド、コード、正しくはなんといったらよいのでしょうか?)

そして、atomで実行しました。

import time print('これから10秒待ちます') time.sleep(10) print('もう一度10秒待ちます') time.sleep(10) print('10秒待ちました')

望んでいた結果は、
「これから10秒待ちます」と表示される。
10秒経過する。
「もう一度10秒待ちます」と表示される。
10秒経過する。
「10秒待ちました」と表示される。
でした。

しかし、

Running: python3 と出てからしばらく待って、
これから10秒待ちます
もう一度10秒待ちます
10秒待ちました
と一度に全ての結果が出るだけで、「10秒待つ」ことができません。

これが、atomで実行した結果です。

ーーーー

調べていくうちにjupyternotebookを使ってtime.sleepメソッドを実行しているサイトがありました。jupyterで実行したら、10秒待ってくれました。

また、atomにhydrogenをインストールしてatomでもtime.sleepを実行できるようにしました。

ーーーーー
この質問に至る経緯は以上です。

本によっては対話型のコードで書かれているものもあり、プログラミング環境がこれほど多様なものかとおどろいています。

二度、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/02/13 05:49

> 一度に全ての結果が出るだけで、「10秒待つ」ことができません。 「10秒待つ」ことはできているけど、print()での表示がバッファリングされているため、全部終わってからまとめてされている、のではありませんか? https://github.com/atom-community/atom-script/issues/537 の画像のように、atom-runnerの設定で「Command Arguments」に「-u」を指定して、バッファリングを無効にしたら、どうなりますでしょうか? 参考 https://qiita.com/bmtsstl/items/8b6ef88d40a6846ea1e3
upacara

2021/02/14 12:13

ありがとうございます。 「10秒待つ」ことはできているけど、print()での表示がバッファリングされているため、全部終わってからまとめてされている、で間違いありません。atomはデフォルトでバッファされているのですね。 リンク先を参考にして探したのですが、configure run optionsがatom-runnerのどこにあるのかわかりませんでした。atom-runnerのどこにくだんの設定があるのかご存知ですか? ヒントをいただけてうれしくおもいます。が、まだ答えにたどり着けていません。
upacara

2021/02/14 12:35

バッファーのとりかたが違うのでしょうか。 atomのhydrogenで次のコードが実行できません。time.sleepと同じ現象のようです。 ターミナルで呼び出したjypyterlabでは実行ができます。 python付属のIDLEでも実行できます。 import tkinter key7=0 #変数key7の初期値 def key_down7(e6): #この関数を変数e6と関連づけるという宣言。 global key7 key7=e6.keycode #e6に対してkeycodeを取得する print('押されたKEYの番号は:'+str(key7)) #押されたキーを表示する。 root7=tkinter.Tk() root7.title('キーコードを取得') root7.bind('<KeyPress>',key_down7) #<>内のイベントが起こった時にkey_down7を実行する。 root7.mainloop()
jbpb0

2021/02/14 13:13

訂正します https://github.com/atom-community/atom-script/issues/537 の画像は、「atom-runner」ではなく「Script」 https://github.com/atom-community/atom-script の設定画面でした 失礼しました 「atom-runner」の設定は、「atom-runner.coffee」というファイルを修正するようです https://qiita.com/tukiyo3/items/935b4025385229cbad39 その中の「defaultScopeMap:」と書かれてるところの少し下に python: 'python' みたいに書かれてるのがあれば、そこに python: 'python -u' のように「-u」を追加したらいいのだろうと思いますが、当方が現在確認できる環境ではないので、思うだけです https://stackoverflow.com/questions/35546627/how-to-configure-atom-to-run-python3-scripts
upacara

2021/02/23 05:35

お返事に時間がかかってしまいました。 atomのバッファのなくしてtime.sleepがjupyterlabやidleと同じように実行されるようにするのが目的でした。 現状、atom-runner.coffeeが見つかりません。 https://qiita.com/tukiyo3/items/935b4025385229cbad39 このリンクをいただいた意図が測りかねています。goという拡張子がバッファと関係があるのでしょうか。
jbpb0

2021/02/23 15:02 編集

> atom-runner.coffeeが見つかりません。 当方のMacのatomにatom-runnerを入れて確認しました 「atom-runner.coffee」は、下記にありました /Users/XXX/.atom/packages/atom-runner/lib > atomのバッファのなくして 「atom-runner.coffee」の「defaultScopeMap:」と書かれてるところの少し下の python: 'python' を python: 'python3 -u' と変更したら、バッファリングが無効になりました なお、当方の環境だと、「python」だとpython 2.xが起動するので、「python3」に変える必要もありました
jbpb0

2021/02/23 15:44

私の2021/02/14 22:13のコメントの一番下に書いたWebページ https://stackoverflow.com/questions/35546627/how-to-configure-atom-to-run-python3-scripts は、見ていただけましたでしょうか? それの「Install atom-runner in your Atom...」から始まる回答に、「atom-runner.coffee」を開いて「defaultScopeMap:」と書かれてるところ付近を修正する手順が、画面のキャプチャを使って図解されてますので、手順を理解する参考になると思って、そのWebページを紹介しました https://qiita.com/tukiyo3/items/935b4025385229cbad39 は、atomの詳細な設定をコントロールする場合は「atom-runner.coffee」を触るということをまず知っていただくためには、そのことに触れている日本語のWebページも見ていただいた方がいいだろうと思ったので、紹介しました 設定している内容は全く違いますが、そのファイルを触るということが重要なので
upacara

2021/02/27 15:35

お返事ありがとうございます。atomを入れてもらってリンクもいただいていたのに見つけられなかったことを恥ずかしくおもいます。 見つかりました。 十秒、待てるようになりました! .coffeeというファイル形式が他のファイル形式と何が違うのかはまだわからないのですが(調べたら.txtと同じだとかなんだとか・・・)、こうやって少しずつプログラミングの世界に触れられることをうれしくおもいます。 仕事としてプログラミングを使って問題を解決する仲間と出会えるようにこれからも勉強を続けたいと思いました(どこに行くか、検討がつかないのですが)。手ほどきをしていただき感謝です。ありがとうございます^^
guest

回答1

0

自己解決

jbpb0さんの方法で解決しました。ありがとうございました。みなさんの知恵をお借りしながらプログラミングの学習を進められることに感謝です。

投稿2021/02/27 15:37

upacara

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問