[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/24 01:18 / Filesize : 206 KB / Number-of Response : 962
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Pythonのお勉強 Part30



1 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 19:09:55 ]
Pythonオフィシャルサイト
www.python.org/
日本Pythonユーザ会
www.python.jp/Zope/
まとめWiki
python.rdy.jp/
関連スレ
find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
前スレ
pc11.2ch.net/test/read.cgi/tech/1223543412/

496 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 14:42:32 ]
>>490
依頼を受けたデータ入力会社の雇われたキーパンチャーがね

497 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 19:10:22 ]
Time flies like an arrow.

498 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 20:22:40 ]
>>459
参考になった、ありがとう
思ったより手間すくないのね

499 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 20:49:32 ]
>>462
オライリーの詳説 正規表現にはPerlでバランス取れた括弧のキャプチャの例が載っていましたよ
www.oreilly.co.jp/books/9784873113593/
>5.2.4 括弧類の対へのマッチ
今手元に本が無いからうろ覚えですけど、Perlの独自拡張で無限の?入れ子まで対応しているとか
>>471の期待通り動く処理系ってPerlのそこそこ新しい奴じゃないですか?
他の正規表現処理系でのやり方も書いてあったような気がするので
もし詳説 正規表現が立ち読みできたり図書館で借りられる環境ならぜひ読んでみて
>>495さんの言う通り正規表現で無限の入れ子なんて普通は受理できないのですが
Perlの正規表現処理系は拡張が物凄いので正規文法の限界を思いっきり超えてます
このオライリーの本はこんな形式文法の話や正規表現処理系のNFAとDFAの違いなど
細かいけど(好きな人には)面白い話が載ってます


500 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 21:10:55 ]
たてよみ

501 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 21:42:03 ]
最後の方に言語毎の正規表現の比較が掲載されてて、それのおかげで助かった事が2回あった

ところで”オライリーの本”ってどう略すの

502 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 21:55:49 ]
>>501
表紙の動物じゃないか?
ラクダ本とか、バッタ本とかあるけど
となると正規表現はフクロウ本?

503 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 22:40:16 ]
Twistedは蛇玉本

504 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 10:14:32 ]
pythonのIDEにgeanyってのがあるのを知って使い始めました。
スニペッツを使ってみようかと思ったら、標準だと何も登録されていないようですね。
geanyをお使いの方は、スニペッツはどうしていますか? 手書きでしょうか。
どこかのサイトにあればいいのですが・・・



505 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 10:26:15 ]
pyjames使ってる人います?

506 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 10:51:05 ]
返答まだですか?

507 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 12:31:16 ]
tupleのi番目の要素だけを更新するには
tupleを作りなおすしかないのでしょうか?

v=(1,2,3)
vv=(v[0],v[1]+2,v[2])


508 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 12:34:57 ]
はい

509 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 12:42:44 ]
効率を気にしないなら一回listにするかな。

vl=list(v)
vl[i]+=2
vv=tuple(vl)

でも更新したくなったならlistのままの方が良いんじゃないかという気はする。

510 名前:デフォルトの名無しさん [2008/12/09(火) 14:33:52 ]
>>504
まだ不安定だよgeany

511 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 22:52:44 ]
>正規表現
みなさん、レスありがとうございました。
かなり勉強になりました^-^

正規表現で実現できるならプログラムの一貫性がとれてよかったのですが、
そもそも括弧を同じ数だけカウントするなんてたいしたことない処理なので
今回は正規表現を使わず対応したいと思います。


512 名前:デフォルトの名無しさん [2008/12/09(火) 22:52:55 ]
Python 2.6.1あげ
www.python.org/download/releases/2.6.1/
バグフィックスなので2.6つかっている人はどうぞ〜

513 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 23:25:33 ]
>>510
そうですか。いいところかなと思っていたのですがね。
MacでPythonをサポートしたIDEは何がいいか悩みます。


514 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 00:30:34 ]
2.6.1インストールしたんだけど、_socketのimportエラーでるんだけど、
なんなのこれ



515 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 08:26:38 ]
うちは、Windows + PyScripter 1.9.9.2 + Python 2.6.1だとエラーが出る。
PyScripter --python26だとimport socketでエラーが出る。
PyScripter --python25だとエラーは出ない。

また、コマンドラインからpythonを起動したときはエラーは出ない。
Python 2.5.2, 2.6.1, 3.0で確認

516 名前:デフォルトの名無しさん [2008/12/11(木) 09:10:31 ]
IDLEの補完がなんか気に入らない
IDLEの代わりってなんかある?

517 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 09:15:09 ]
>>516
例えば、どういうところが気に入らないのか教えてもらってもいい?

518 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 09:53:30 ]
op

おっぱい


519 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 10:13:22 ]
vista で wx アプリのデバッグで強制終了が多発するようになってから、久しく使ってなかったけど。
久しぶりに起動しようとすると、起動すらしなくなっていた。

Windows vista + PyScripter 1.9.9.2 + Python 2.6.1 (環境には 2.5.2, 3.0もインストール済)
+ RPyC 2.60 (pyscripter googlecode の downloadより)
--python25 だとエラーが出て一応起動するけど、何かするたびにエラー。終了も出来ない状態。

official の 1.7.2 に戻してみても上の現象が発生。





520 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 11:06:46 ]
>>515
pythonを組込で使うとエラーがでるみたいだな。

521 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 11:15:53 ]
バグらしいな。
bugs.python.org/issue4566

522 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 14:07:09 ]
前スレのこれは?
>154 :デフォルトの名無しさん:2008/10/15(水) 22:41:10
> >>144
> 以下の内容を「Pyscripter.exe.manifest」としてPyscripter.exeのフォルダに置いておけばimportできるかも
>
> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
> <security>
> <requestedPrivileges>
> <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
> </requestedPrivileges>
> </security>
> </trustInfo>
> <dependency>
> <dependentAssembly>
> <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></>assemblyIdentity>
> </dependentAssembly>
> </dependency>
> </assembly>

523 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 15:54:48 ]
Vs2008使ってるのか。
もうコンパイラのバージョンどんどん上げるのやめてくれよ。

524 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 20:40:00 ]
PythonはVS2003の次はVS2005を使うかも、と思ってVS2005 Standard買ったら、
VS2008使うようになってた。ちょっとショックだ。
……たぶんMinGWでもコンパイルできるのだろうけどさ。



525 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 20:45:31 ]
>>524
それはご愁傷様だが、べつにただで落とせる2008のexpressで問題はない
VC8以降のmsvcrtはSxSに格納されてmanifestを使うから、mingwは微妙かもなあ
試してみないとわからんが

526 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 23:24:31 ]
スクリプトの文字コード(# -*- coding: xxx -*- の xxx)を
スクリプト実行時に取得するには、どうすればよいでしょうか。

527 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 23:39:33 ]
ファイルをオープンして1-2行目を調べればいい
coding[:=]\s*([-\w.]+)

528 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 00:44:44 ]
正規表現おじさん来た!!

529 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 00:46:52 ]
正規表現って気持ち悪いよね

530 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 00:50:23 ]
>>528-529
さてはおまいらPEP読んだことないな。

531 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 01:12:35 ]
あるよ。
正規表現はキモイから使うなって書いてあったよ。

532 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 01:14:49 ]
ないよ。
ワンダーはモモーイから聞けって書いてあったよ。

533 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 01:26:48 ]
正規表現使うやつは童貞

534 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 01:40:35 ]
なんで分かった?



535 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 01:41:52 ]
正規表現使わん場合はif文でがんばるの?

536 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 01:45:42 ]
for if最強伝説

537 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 09:21:16 ]
>>535
正規表現の次はifかよ(w
おっさんはこれだから困るよなー。

538 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 10:00:01 ]
とりあえずおっさんって言いたいだけじゃ・・・
上司にいじめられたか?

539 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 11:21:42 ]
>>535
> if文でがんばる

比較の度に文字列のスライスを生成する効率の悪いコードしか思い浮かばないけど...。

正規表現等の組込のドメイン固有言語は、利点・問題点があるので利用は適材適所。
使い所と用法を誤らなければ、便利なツールとして活用できるよ。

例えば、>>526なら、>>527の通り ワンライナーの正規表現で十分事足りる。
PEP 0263 より
> More precisely, the first or second line must match the regular
> expression "coding[:=]\s*([-\w.]+)".

re.VERBOSEオプション付きでコメント付けたり、
(?P<encoding>[-\w.]+) の様に名前を付けると、可読性の面でより親切。

>>511の用途なら、
字句解析とステートマシンを使い、扱いやすいデータ形式に変換してから処理する。
簡単なサンプル: S式のリスト表示。ttp://paste.org/index.php?id=4477
# 文字列内の()や引用符のエスケープシーケンス等も考慮したい場合は、
shlex, tokenize等のモジュールも見てみるといい。

540 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 12:50:08 ]
>>521
bugs.python.org/file12249/testpy.c
#include <Python.h>

int main(int argc, char **argv)
{
Py_Main(argc, argv);
}

これだけでembedできるんだ
知らなかった
というかargc arcvには何いれたらいいんだ


541 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 12:52:15 ]
pythonでscript書くと
Makefile
いらないんじゃないかと思うこともあるけど
やっぱりmakeは使ってしまう

542 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 13:39:18 ]
scons(笑)

543 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 14:11:35 ]
DEP関係はHeapAlloc→VirtualAllocなんだって


544 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 17:09:18 ]
sconsだめなの?



545 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 19:20:09 ]
1234567890 を
urlsafe_b64encode
(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_)
で表記すると
BJlgLS
であってますか?

546 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 19:26:25 ]
base64.urlsafe_b64encode('1234567890')
MTIzNDU2Nzg5MA==

547 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 19:31:53 ]
'%08x' % 1234567890
499602d2
0100 1001 1001 0110 0000 0010 1101 0010 (499602d2)
01 001001 100101 100000 001011 010010 (BJlgLS)
後ろから詰めるとそうなるけど
base64って先頭から6bitづつ区切るだろ
010010 011001 011000 000010 110100 10
じゃないのかな

っつーかそもそも1234567890を何bitでとるのかによって変わるんじゃね?


548 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 19:35:17 ]
base64じゃなくて64進数なら
print format(1234567890, 64)


549 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 03:08:26 ]
>>548
Python2.6のbuiltinsのformat?
数値のspecは文字列で指定するみたいだけど。PEP3101
組み込み関数では、int(str,base)でもn進数変換できるけど、
_PyInt_Formatは2..36進数までしかサポートしてない。



550 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 03:42:03 ]
>>540
戻り値が渡ってないので。return Py_Main(argc, argv);
引数は python -h 参照。

551 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 03:52:24 ]
>組み込み関数では、int(str,base)でもn進数変換できるけど
逆じゃない?

552 名前:550 mailto:sage [2008/12/14(日) 07:03:50 ]
2..36進数表記の文字列 -> 数値でした。指摘thx
int(str,base) は C/APIでは PyInt_FromStringだった、これもbaseの範囲は2..36

n進数変換。CAPIには PyNumber_ToBase があったけど、
pythonから使えるのはbase=2,8,16 (bin,oct,hex) のみ。

from ctypes import py_int, py_object, pythonapi
num_to_base = pythonapi.PyNumber_ToBase
num_to_base.argtypes = [py_object, c_int]
num_to_base.restype = py_object
print(num_to_base(7, 10)) # "7#13"
print(num_to_base(128,64)) # "64#20"

値によっては変換後の文字を端末に表示する際にUnicodeEncodeErrorになることも。(python 3.0)



553 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 06:25:41 ]
b64c = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'
base = len(b64c)
digs = 11 #(nにあわせて変えてね)
''.join([b64c[int(n / base ** (digs - 1 - x)) % base] for x in xrange(digs)])


554 名前:デフォルトの名無しさん [2008/12/17(水) 02:09:54 ]
python 2.5.3c1 and 2.4.4c1 release



555 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 04:04:20 ]
2.4.6では?

556 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 06:40:25 ]
coreblog.org/ats/finest-new-neature-of-python-30

3.0は変数名に漢字が使えるんですね。

557 名前:デフォルトの名無しさん [2008/12/17(水) 13:06:52 ]
omoshiroi

>>> class 動物:
>>>   鳴き声 = '・・・'
>>>   def 鳴く(自分):
>>>     print('%s:%s' % (自分.__class__.__name__, 自分.鳴き声))
>>>
>>> class 猫(動物):
>>>   鳴き声 = 'にゃー'
>>>
>>> class 熊(動物):
>>>   鳴き声 = 'クマー'
>>>
>>> 君のペット = 猫()
>>> 君のペット.鳴く()
猫:にゃー
>>> 僕のペット = 熊()
>>> 僕のペット.鳴く()
熊:クマー


558 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 13:44:08 ]
>>557
おもしれぇww

559 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:06:33 ]
> Python 3.0になってもPEP 8は生きているので,クラス名に「動物」はありえないです(笑)。

ということなので真に受けんように

560 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:09:11 ]
>>559
自分用に分かり易いコード書く程度だったら問題はない。

561 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:51:36 ]
ニートかどうか判別できるわけですね、わかります。

562 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 17:20:02 ]
560がニートだ,みたいな言い方はやめろよ!!

563 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 17:22:12 ]
つまらないな。君達、もうちょっと大人になれ。

564 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 18:36:52 ]
Is your tail white, too?




565 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:23:23 ]
Your tail isn't white too, is it?

566 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 00:36:37 ]
listの中を進んだり戻ったりしたいのですが、
インデックスで走査すると遅くて使い物になりませんでした。

そこでイテレータの使用を検討したのですが
進むことはできても戻ることができません。

Cのポインタ走査のように何か高速に走査する方法はないでしょうか。



567 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 00:42:06 ]
Pythonのlistはlinked listではなくvectorだから
インデクスアクセスはランダムアクセスで、オーダー的にはO(1)だ

それが遅すぎるというのであれば、Pythonでやるのが間違いであるような
仕事をさせてるんだろう
素直にC/C++使っとけ

568 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 00:42:56 ]
C最強!

569 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 00:52:38 ]
>>567
そだったんですか・・・
てっきりリンクリストとばっかり思ってました。

ありがとうございました!

570 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 01:38:59 ]
使いものになんねえw

571 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 01:40:54 ]
そのための拡張モジュールさ

572 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 02:21:13 ]
Python Code Reading行ったけど
丁寧に説明してくれたな。次も行きたいと思う

573 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 02:21:29 ]
スクリプト書くときどんなエディタ使ってます?
emacsで書いてるんですけど、visual studioのインテリセンスのようななのがほしいです。
eclipseのPydevってのしかないのかなー、できるならemacsでがんばりたいんだけど。

574 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 05:42:52 ]
NetBeans 6.5のPythonプラグインというのもあるが、まだまだだな。



575 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 08:28:32 ]
leopardでもおすすめのエディタを教えてください。

576 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 13:04:40 ]
>>573
pysmell

577 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 13:09:28 ]
>>576
emacsだとpycompleteぐらいしか選択肢がないと思ってたのだが,
今はpysmellというのがあるんだ.横槍だが参考になった.

578 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 14:41:38 ]
emacs code browserもpythonに対応してるぞ

579 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 14:44:30 ]
>>576
便利そうだね
www.emacswiki.org/AutoCompleteSources


580 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:01:56 ]
>>573
今書いてるからもうちょっとしたら公開するよ。

581 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:20:05 ]
Pythonは動的に属性が追加/削除されるから、インテリセンスみたいなのとは
相性がイマイチだね。

582 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:23:27 ]
>>581 わかってないなー。未熟だね。

583 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:25:11 ]
まあ例えば
def foo(x):
  x.
までタイプしたところで補完するのは無理だわな
少なくともスコープ内で型が確定してるようなケースでないと

584 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:42:34 ]
Function Annotationsを利用する事はできそうだよね



585 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 19:32:38 ]
Function Annotations の具体的な用途は 3rd party製ライブラリに委ねられていて、
型情報に限らずどんな式でも書けるようになってる。

変数の型を保障する仕組みではなく、ライブラリ等でチェックする際のヒントとして使えるだけ。
エディタ/IDEが皆に「function annotations には型を書く」と強制は出来ないので、
補完への利用は出来ないことはないけど、難しいんじゃないかな。


586 名前:デフォルトの名無しさん [2008/12/18(木) 20:14:25 ]
最近学習を開始した初心者です。
最初はコマンドプロンプトで命令を表示させているだけですが、
pythonで作ったプログラムはこういったCUIの中で行われるものですか?
***.exeで立ち上げるようなプログラムを作るのは無理ですか?
Cやっとけってことでしょうか?

587 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 20:15:57 ]
っttp://python.matrix.jp/modules/py2exe.html

588 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 20:24:55 ]
windowsなら拡張子を.pywにすれば.exeっぽく実行できるよ
GUIがやりたいってことなら該当するライブラリをあさってみるといいよ
TkinterとかwxWidgetsとか

589 名前:デフォルトの名無しさん [2008/12/18(木) 22:16:00 ]
wxPython+py2exe


590 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:06:32 ]
>>586
コマンドラインからでもウィンドウを表示できることは理解されているでしょうか?

$ python
Type "help", "copyright", "credits" or "license" for more information.
>>> import wx
>>> class MyApp(wx.App):
... def OnInit(self):
... frame = wx.Frame(None, 0, "Title")
... frame.Show(True)
... self.SetTopWindow(frame)
... return True
...
>>> app = MyApp(0)
>>> app.MainLoop() # ←ここで中身が何もないウィンドウが出る。
>>>


591 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:14:03 ]
横からだけど、MainLoop内ではどういうことしてるの?
ループに入るって事は中でずーっと処理が繰り返されてるんだよね。
なのに放置してたらCPU使用率は0付近をさまよう。これって不思議。
自分でforループとかwhileループ走らせれば面白いほどCPU使用率は上がるのに。

592 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:25:39 ]
GUIが動いてるだけでCPU使用率が跳ね上がったら
まともにパソコン使えないだろ!

593 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:26:43 ]
>>591
普通はこんな感じ

while True:
  次のイベントを取得する(イベントが来るまでブロック)
  イベントを処理する

ビジーループではないからCPU使用率は跳ね上がらない
イベントが来なければずっと寝ているだけだ

594 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:31:45 ]
>>590のようにPythonの対話環境を生かして
対話的にGUIを試したい場合、使用するツールキットによっては細工がいる

>>590の例だと、最後のMainLoop()を呼ぶまで窓は表示されず、
呼んでしまうと今度はそこでブロックしてしまい、対話環境が使えなくなるはずだ
それではせっかく対話環境からGUIを試す面白みも無いだろう

Tkの場合は、環境によるが、mainloop()関数をよばずとも
root = Tkinter.Tk()
だけでいきなり窓が出て、対話環境で引き続き色々コマンドを打ち込むことが
可能なようだ
試したところWindowsとLinuxでは大丈夫なようだが、cygwinではmainloopが
必要で、このような使い方はできないようだ



595 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:37:42 ]
>>593
なるほど…。となるとイベント取得ってのは、OSから呼び出す形で実現してるのか。

596 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:42:53 ]
>>595
ん?いや、送ってくるのはOSなりウィンドウシステムなりだが、
あくまでアプリが能動的に読み取る

pythonでraw_input()関数を呼ぶと入力待ちになって
キーボードから何か打ち込んでやると制御が戻って入力が得られるだろう
それと基本的には同じだ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<206KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef