22/12/21 13:10:09.14 uJxDCyvm0.net
自分でケツ拭くなら別にいいよ
その点、機械学習屋やデータサイエンティストはだいたい責任取らずに逃げるからタチが悪い
組み込み屋はいかにクソでも最低限のプロ意識と責任感はある奴が多い
251:デフォルトの名無しさん
22/12/21 13:17:21.01 M5sZwq5J0.net
機械学習屋のコードが1番きついわ
他の分野はまだ歴史があるからそれなりにコードは綺麗に書くという文化が浸透しているけど
機械学習の分野についてはバッチジョブだし
面倒なコードはフレームワーク側が持ってるから
ユーザーがグチャグチャのコードを書きがち
252:デフォルトの名無しさん (ワッチョイ 6666-Jn8R)
22/12/21 13:48:59.56 RDg+NYLG0.net
サンプルがおかしい
世の中のソフトの大半はwebか金融だろ
253:デフォルトの名無しさん (ワンミングク MM36-Mwb3)
22/12/21 13:50:28.08 yiozSUofM.net
どうせ使い回さないのに綺麗に書く意味
254:デフォルトの名無しさん (ガックシ 06e6-7E/c)
22/12/21 13:55:34.79 KT7+MN136.net
機械学習はもうyamlでやる時代
255:デフォルトの名無しさん
22/12/21 23:00:50.73 dTgA3nGq0.net
>>245
ハードのテストが一番大事だもんね、仕様通りになってるかはソフト書かないとわかんないし
>>247
機械学習屋はともかくデータサイエンティストはサイエンティストだからプロダクションレベルを要求しても仕方ないと思うな
Jupyterでrestart and run all cellで動くだけマシといえよう
職能が違うのよ。普通のプロダクションコードのソフトメインで組み込みとデータサイエンスちょっとやったことある自分はそう思う。
どこに時間かけてるかが違う。憎み合うのは非生産的なのでやめましょう、相互理解しましょうって思っちゃう。
256:デフォルトの名無しさん (ブーイモ MM17-Z1hy)
22/12/22 04:33:23.99 NfOs0lsnM.net
Web屋は仕様書を書くという習慣がないから
データサイエンティストなどという詐欺師と同じw
257:デフォルトの名無しさん
22/12/22 08:44:45.20 YRfbWBEUM.net
Pythonに出�
258:�って、自分がC言語に挫折した理由がやっとわかった 俺らがPythonで空気のように使っているリスト・タプル・辞書 これらがCにはないので、処理ロジックを書く前にまず これらに相当するデータ構造を配列・ポインタを駆使して実現しなくてはならない 多くのC入門者はここで挫折してしまう C言語に20年挑んでハローワールドから一歩も進めなかった男の悔恨
259:デフォルトの名無しさん
22/12/22 09:18:43.62 dL3lthyL0.net
リスト、タプル、辞書程度を実装できないレベルならどっちにしろどこかで挫折してただろ...
260:デフォルトの名無しさん
22/12/22 09:31:03.41 LbQSD5ER0.net
辞書はどうやって作ったらいいか未だに判らない
awkの連想配列が魔法に見えた
261:デフォルトの名無しさん
22/12/22 09:41:13.34 hTl9WjWG0.net
>>256
そこで挫折するって言ってるのに、その先のどっかで挫折するってなんか意味あるコメントなのか?
>>255 の言いたいことは分かる気がする
python知れてよかったな
262:デフォルトの名無しさん
22/12/22 09:44:49.77 LbQSD5ER0.net
みんなが同じようなことをやるなら誰が代表してやればいい
言語に仕様として持たせたり、関数をライブラリにしたり、モジュールを作ったり、
サンプルプログラムを流用したり
AIに書いて貰ったり ←今ここ
263:デフォルトの名無しさん
22/12/22 10:34:47.44 dL3lthyL0.net
>>258
Cに挫折した理由が
> リスト・タプル・辞書これらがCにはない
じゃないってこと
てかこの程度の文章も理解出来ないとかヤバくね?
264:デフォルトの名無しさん
22/12/22 10:38:02.07 O2u0DCiFd.net
Pythonに慣れるとCでcsvファイル読み込むだけでも面倒臭く感じるな
265:デフォルトの名無しさん
22/12/22 10:44:11.72 jksouGkc0.net
>>260
266:デフォルトの名無しさん
22/12/22 10:49:10.26 hTl9WjWG0.net
>>260
挫折した理由は下が出来なかったからだぞ?
> これらに相当するデータ構造を配列・ポインタを駆使して実現しなくてはならない
これが実現できなきゃ先にどうやって進むんだ?
267:デフォルトの名無しさん
22/12/22 10:55:23.14 N0yJkasM0.net
構造体の配列でいいのでは
268:デフォルトの名無しさん
22/12/22 11:01:24.77 smn+2blz0.net
オートマにばかり乗ってると、マニュアル車の運転が出来なくなる
269:デフォルトの名無しさん
22/12/22 11:06:25.86 LbQSD5ER0.net
結局は言語ではなくて、データ構造とアルゴリズムの理解なんだよな
昔はみんなが知ってるべき知識だったけど、どんどん知らなくても使えるようになってきた
270:デフォルトの名無しさん
22/12/22 11:06:39.49 jksouGkc0.net
>>264
タプルならね
リストだとデータをメタにする必要あるし
辞書はツリーやハッシュマップも必要で
共通して動的なメモリ管理がつきまとう
271:デフォルトの名無しさん
22/12/22 11:11:21.58 dL3lthyL0.net
>>263
そんなのググれば実装例あるからまずはそのまま使えばいいだろ
そんな知恵もないレベルならそりゃそこで挫折するわなw
272:デフォルトの名無しさん
22/12/22 11:13:23.55 smn+2blz0.net
頭は筋肉と同じで、使わないと退化する
273:デフォルトの名無しさん
22/12/22 11:24:11.50 mRMrFGRVM.net
30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!
274:デフォルトの名無しさん
22/12/22 11:27:48.27 fdccbL2R0.net
>>268
なんかかわいそうな人 バイバイ
275:デフォルトの名無しさん
22/12/22 12:08:33.90 smn+2blz0.net
知恵のないプログラマって、使い物にならないが
いるんだな、そういうのが
276:デフォルトの名無しさん
22/12/22 12:10:33.74 dL3lthyL0.net
>>271
そんなレスしか出来ないなら黙ってなよ...
そっちのほうがかわいそうすぎるわw
277:デフォルトの名無しさん
22/12/22 12:23:21.69 eLm5edyfd.net
挫折した理由がわからないからなのか車輪の再発明に嫌気がさしたからなのかで違う
278:デフォルトの名無しさん
22/12/22 12:25:09.82 smn+2blz0.net
適性がないと思う
279:デフォルトの名無しさん
22/12/22 12:29:33.73 Z8BCtWeu0.net
マウントおじさんは今日も元気だなぁ
280:デフォルトの名無しさん
22/12/22 18:06:39.79 mFK9O5hM0.net
>>261
学生の時、CとJava覚えて
Cで基本情報処理取ったけど
Python知ってから、家でPythonしか使ってないけど
一般的なプログラマーじゃないから会社でそういう言語を使うことはないけども
資料の自動化云々、家のラズパイ、仮想通貨関係とか
Pythonしか使ってない
281:デフォルトの名無しさん
22/12/22 18:20:13.15 indjkH6A0.net
けど
けど
けども
使ってない
282:デフォルトの名無しさん
22/12/22 18:47:57.98 mFK9O5hM0.net
>>278
やめろ!5chだぞ
お前、絶対面白くない奴だろう
君が求める完成形の文章は絶対に面白くない
283:デフォルトの名無しさん
22/12/22 19:03:24.41 dbqZG8bb0.net
簡単に書けるレベルのものしかやったことないけど、プログラマとしての欲求が満たせて自分は満足している
簡単なものしか書けないレベルっていうのが本質的なんだろう
284:デフォルトの名無しさん
22/12/22 19:07:06.14 smn+2blz0.net
人の揚げ足取りが一番つまらない奴
285:デフォルトの名無しさん
22/12/22 19:09:04.98 smn+2blz0.net
普通は簡単に書けるレベルをやるので十分なんだよ
自分がやってることをできるだけ手間掛けないで済むようにすることから始める
簡単に書けないことは、それで飯を食おうと思ったときにやれば良い
286:デフォルトの名無しさん
22/12/22 19:19:51.34 gXKKQs6i0.net
>>281
人格攻撃もどっこいじゃない?
287:デフォルトの名無しさん
22/12/22 19:25:45.86 smn+2blz0.net
技術板なんだから、お互いの技術向上と切磋琢磨で活用したい
多少のちゃちゃ入れはいいかもしれんが、
288:デフォルトの名無しさん
22/12/22 19:33:35.57 pS7gMn7x0.net
Cはプログラマを信用してるから最小設計ポインタドーン!
289:デフォルトの名無しさん
22/12/22 19:36:06.08 mFK9O5hM0.net
この流れで「どっこいどっこい」じゃなくて「どっこい」で来るのか、、、
なるほどね
290:デフォルトの名無しさん
22/12/22 20:01:31.68 gat4VRlWM.net
どすこいじゃなくて良かったじゃん
291:デフォルトの名無しさん
22/12/22 20:08:02.26 YRfbWBEUM.net
まあまあ喧嘩せんでくれ
自分はCに致命的に向いてないんだろう
例えば、20年Cに挑んでどうしても理解できなかったのがポインタのポインタ
**argvがわからないのでコマンドライン引数を使うアプリが作れず挫折
実はPythonにも*と**があって絶望しかかったのだけど、これはPythonを使う上で必須ではないようでセーフ
292:デフォルトの名無しさん
22/12/22 20:13:27.78 LbQSD5ER0.net
あれは結局言語仕様がおかしいんだよな
Cで書く人はみんなargvを憎んでいる
293:デフォルトの名無しさん
22/12/22 20:29:10.73 N0yJkasM0.net
アンカーだけのレス
へのアンカーなら分かるだろ
294:デフォルトの名無しさん
22/12/22 20:50:41.85 PKP5vjg/0.net
>>286
この流れで揚げ足取れるのが凄いわ
どっこいどっこいの略とまで書かないと理解できないとも思わなかった
ごめんね
295:デフォルトの名無しさん
22/12/22 21:05:30.63 mFK9O5hM0.net
>>291
なぜ「どっこい」のレスで切らんかったの?
あそこで切ったら、ある意味勝ちだったのに
そういうとこだよね
296:デフォルトの名無しさん
22/12/22 21:22:01.08 dL3lthyL0.net
>>288
> **argvがわからないのでコマンドライン引数を使うアプリが作れず挫折
それchar *argv[ ]って書けば多少理解し易い
要するに文字列(char *)の配列だから
297:デフォルトの名無しさん
22/12/22 21:34:51.38 oY+OEcI00.net
>>292
なぜ?勝ち負けを求めてるわけじゃないから
もしかしてレスにいちいち勝ちを求めてるの?疲れない?
298:デフォルトの名無しさん
22/12/22 21:36:57.96 dL3lthyL0.net
↑ どう見ても負けず嫌いw
299:デフォルトの名無しさん
22/12/22 21:52:19.67 LbQSD5ER0.net
プログラミングのハードルが下がったなと実感する瞬間である
300:デフォルトの名無しさん
22/12/22 22:02:44.58 mFK9O5hM0.net
>>294
つまらないレスをする人って
それがわからないからつまらないレスをする訳だが
その人がレスを続けたところで当然内容はつまらない
せっかくそこそこ面白いのを出したんだから
面白い状態で終わらせとけばいいのにと思って
「やっぱりつまらないよねー」で終わっちゃったよね
301:デフォルトの名無しさん
22/12/22 22:05:02.75 c+J4V8f90.net
#include <stdio.h>をおまじないって説明すると馬鹿にされるけどさ
Cの入門書なんかで#include <stdio.h>を「今はとりあえず、おまじないと思っておいてください」みたいな説明してるとマニアックな人から糞本扱いされるけど、じゃどんな説明するのが正解なんだろうか。
hello worldを書いてる初心者に、プロトタイプとかマクロとかから説明するのだろうか。
なぜプロトタイプみたいのが必要かって言うと、printf()は分割コンパイルでライブラリというものに入っていて……とか初心者が納得のいくまで説明をしなきゃならないのか。
「stdio.hというファイルにprintf()を使うための情報が入っているのでそれを取り込む命令です。詳しいことはおいおいわかりす」って簡単に説明するなら「今はおまじないとおもっていてください」と大差ないし。
バシッと納得のいく説明の例を教えてほしい。
302:デフォルトの名無しさん
22/12/22 22:07:40.99 smn+2blz0.net
ハードル下がってプログラマ人口が増えると良いね
303:デフォルトの名無しさん
22/12/22 22:24:53.66 LbQSD5ER0.net
論理的に考えられる人が増えたらいいとは思う
304:デフォルトの名無しさん
22/12/22 23:02:38.79 TDhKeJEe0.net
>>297
面白いレスサンキュー
305:デフォルトの名無しさん
22/12/23 08:01:48.05 Xg/JPq4Q0.net
>>298
外部の読み込むのがinclude
stdio.hを読み込むとprintfのような基本的な関数が使えるようになる
くらいの説明なら初心者でも分かるんじゃない
306:デフォルトの名無しさん
22/12/23 08:14:41.70 Z/1nZoBr0.net
実際にはプロトタイピングしているだけなので、includeしなくてもexternしてしまえば使える
307:デフォルトの名無しさん
22/12/25 15:05:08.45 szxk8o6ud.net
>>298
糞本扱いする人が糞だということにすれば問題なし
308:デフォルトの名無しさん
22/12/25 15:48:44.62 itz3wrzY0.net
おまじないがダメなら料理に例えようw
309:デフォルトの名無しさん
22/12/25 21:04:49.84 UDG4tDm5.net
バリデーション管理しやすくかつクラスを普通の関数のように扱いたいのですがどうしたら良いでしょか・・
用途はありませんが試しに足し算するだけのクラスを実装してみました
from typing import Optional
from pydantic import BaseModel
class _Sum(BaseModel):
a: int
b: int
def sum(self):
return self.a+self.b
#sum()を使うまでに段階を踏んでしまう
Sum=_Sum(a=3,b=3)
print(Sum.sum())
#sum(2,3)のように使いたい
#やりたいことは↓こんな感じで、自分で作ってみました
URLリンク(ideone.com)
後々に”偶数しかダメ”とかsum09自体を拡張したりとかしたいです
310:デフォルトの名無しさん
22/12/25 21:37:54.73 ZZol25Zb0.net
>>306
_Sumクラスのインスタンス生成時に型とかチェックしたい内容だけ渡すようにして、sumの中でそのチェックをするとか
311:デフォルトの名無しさん
22/12/25 23:13:02.03 ICQtDf1md.net
「普通の関数だと拡張性が弱まる」の意味がわからん
普通の関数のようにクラスのインスタンス化と特定のメソッドの呼び出しを実行できたとして、
そのインスタンスに後でアクセスする方法はないのだから関数ではなくクラスであることに何の意味もない
引数をバリデーションしたいだけなら、普通に引数に渡された値が条件を満たしていなければエラーを投げる関数を作って関数の先頭で普通に呼べばよい
アノテーションとタイプ数変わらないだろ
312:デフォルトの名無しさん
22/12/25 23:24:11.94 ICQtDf1md.net
あと、単に関数の処理としてクラスに実装された機能を利用したいということであれば、関数の中でそのクラスのインスタンスを作って目当てのメソッドを呼べばいいだけだ
トリッキーな仕掛けなど何一つとして必要ない
313:デフォルトの名無しさん
22/12/25 23:32:47.68 B6BX6vu/0.net
逆説だけど同一だからって関数内で関数呼ぶならデコレータの存在意義ないやん
コードの理解を和らげるためにあるんで
314:デフォルトの名無しさん
22/12/25 23:41:27.55 UDG4tDm5.net
>>308
ちなみに>エラーを投げる関数を作って
的なのを実装するとどういう感じになりますか?
少し前に自分でやったのはかなり簡略しますがこんな感じになりました
def must_be_int(n):
if type(n) is not int:
raise TypeError(f"type error:'{n}' is not int")
return n
def sum(a:int,b:int) -> int:
return must_be_int(a)+must_be_int(b)
print( sum(2,3) )
print( sum(2,"3") )
ただこれだとsum関数のロジック
315:デフォルトの名無しさん
22/12/25 23:43:25.19 UDG4tDm5.net
途中でした
ただこれだとsum関数のロジック内にチェックする関数が混在してくるので分けたいなと思い
must_be_int(a)
must_be_int(b)
return a+b
にしたりと、なんかしっくりこなくて・・
316:デフォルトの名無しさん
22/12/25 23:48:37.78 UDG4tDm5.net
ようは、
def sum(a:int,b:int) --> int:
このアノテーションだけでint以外の入ってきたらエラー吐いてくれればいいのに・・
みたいな
317:デフォルトの名無しさん
22/12/26 00:38:14.71 ZJD8d3IcM.net
それはtype checkerの仕事やろ
318:デフォルトの名無しさん
22/12/26 00:54:00.05 3Zc3mIaMM.net
>>308
> そのインスタンスに後でアクセスする方法はないのだから
これどういう意味なの?
インスタンスに後でアクセスする方法あると思うのだけど
319:デフォルトの名無しさん
22/12/26 13:49:23.62 6bMfB0bxa.net
>>306
URLリンク(ideone.com)
class sum(object):
def __call__(self, a, b):
self.a, self.b = a, b
return self.a + self.b
print(sum()(2, 3))
320:デフォルトの名無しさん
22/12/26 15:23:10.53 Z9xA6Bih0.net
>>306
普通に関数で実装してバリデーション用のデコレータ作れば?
def must_be_int(func):
__def _validate(*args):
____assert all(isinstance(x, int) for x in args), "all arguments must be integer"
____return func(*args)
__return _validate
def must_be_even(func):
__def _validate(*args):
__assert all(x % 2 == 0 for x in args), "all arguments must be even number"
____return func(*args)
__return _validate
@must_be_even
@must_be_int
def _sum(a, b):
__return a+b
print(_sum(2, 2))
print(_sum(1, 3)) # error
print(_sum(1.5, 2.5)) # error
321:デフォルトの名無しさん
22/12/26 19:13:28.11 271e9Qy4.net
>>316,317
ありがとうございます
実は__call__つかった方も関数の方(>306のコメントアウトに書いてあるように(ただ、args[1:]の部分が合わないのでバリデーションの部分は意図的に省いて書いてます))も
どちらもやっていたのですが諦めていました
ひとつは、(おま環なのかエディタの設定なのか)今度はアノテーションの方がなぜかデコレーターの方が優先されちゃって表示されて諦めたのと
もうひとつは、今回のような試しにやってみた足し算のみの用途なしな機能だけではない場合、
関数の方だと後々に拡張したいってなったときに難しそうだなと思い諦めました
322:デフォルトの名無しさん
22/12/26 22:18:46.52 IvZMxVOoM.net
30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!
323:デフォルトの名無しさん
22/12/28 11:04:27.64 JTGZh46Y0.net
止まってる車に60キロで走ってきた車がぶつかったら、中の人が受ける衝撃ってどっちの車も同じなんだっけ?
324:デフォルトの名無しさん
22/12/28 11:04:43.39 JTGZh46Y0.net
あ、スレ違いですね。忘れてください
325:デフォルトの名無しさん
22/12/28 12:07:11.51 L0e9GMVm0.net
>>320
同じではない
軽自動車とトレーラーなんか考えてみたらわかるけど、作用反作用の法則で同じ力が軽自動車とトレーラーにかかるけど、軽自動車は潰された後完全にトレーラーに張り付く形で進み、トレーラーはわずかにしか減速しない
よって中の人の衝撃は全然違う
塑性変形で弾性衝突じゃないからそうなると思うかもしれないが、完全弾性衝突の場合だと軽い方が思いっきり跳ね返るだけね。よく跳ねるボールの中にいる人と、地下室の中にいる(地球という大きいボールのなかにいる)人を考えてもいいかも
要は同じ運動量が交換されるが、同じ運動量でも質量が違えば加速度は違うということだね
326:デフォルトの名無しさん
22/12/29 11:07:07.82 jCj0trE4a.net
>>318
URLリンク(www.youtube.com)
327:デフォルトの名無しさん
22/12/29 15:42:32.28 NCBV9Sb6M.net
>>323
動画のクオリティ高くてビビったw
328:デフォルトの名無しさん
22/12/29 19:35:56.88 RiMtnxAm0.net
pythonのバージョン管理ってアナコンダがいいの?
俺ドッカーしか知らんかったからずっとドッカーのこと調べてたんだが
329:デフォルトの名無しさん
22/12/29 19:36:47.55 RiMtnxAm0.net
あとpythonの開発環境って3.8が多いみたいなんだけど理由あるの?
330:デフォルトの名無しさん
22/12/29 19:59:01.94 Y8X+93cs0.net
>>325
公式で配布してるインストーラ
331:デフォルトの名無しさん
22/12/29 22:26:07.07 Y8X+93cs0.net
実行環境の話?
332:デフォルトの名無しさん
22/12/29 22:41:36.15 JTFuHtDdr.net
>>325
ケースバイケースかなぁ
機械学習やるならanacondaはオススメだよ
クラウド連携はanacondaは偶にトラブルになる
環境隔離したいならdockerは良いけど別にdockerでなくてもよい
最近はpipenvやpoetryでディレクトリごとに環境を分離してもいいかな
いろいろ増えすぎて初心者にはコレっていうのが難しい
そんなときは公式のPythonに戻る
333:デフォルトの名無しさん
22/12/29 22:52:19.17 JTFuHtDdr.net
>>326
そういえば何か作るときは3.8を使うことが多いなぁ
特に理由はないけど、3.9以降の使いたい機能は様子見
あとRedhat系列だと3.9以降をインストールするのが面倒くさいのもある
3.8ならSCL使えばさっくりインストールされる
Anaconda使えばいいけどあれはあれでバイナリごとインストールすることになるからなんだかなぁ
334:デフォルトの名無しさん (ワッチョイ 07cf-4Ar3)
22/12/29 23:01:15.14 hdgfZ7yf0.net
Anaconda で動かすツール使ってる
335:デフォルトの名無しさん (ワッチョイ 61f0-K5v2)
22/12/29 23:03:16.65 3S86hTSK0.net
pythonは言語仕様は簡単だけど実行環境の管理が完全に終わってるよね
linuxの知識ないとサーバーサイドでまず使いこなせない
下手したら環境ぶっ壊して「何もしてないのに壊れた」状態が生まれる
336:デフォルトの名無しさん (ワッチョイ 3f93-SwB0)
22/12/29 23:05:37.12 XUilgIKr0.net
だからk8sなんかが流行ってるんでしょ
337:デフォルトの名無しさん
22/12/30 00:23:52.63 i/Imw4oH0.net
何もしなかったから壊れたということを知るべき。
338:デフォルトの名無しさん
22/12/30 05:59:51.50 uddbjkCB0.net
>>327-330
大変勉強になりました
お三方にいただいたアドバイスをもとに
これから検討いたします!
339:デフォルトの名無しさん
22/12/30 08:21:58.84 DzZqzBlm0.net
PythonってVisual Studio のCodeの方じゃなくてCoreの方にも入ってるよね
いつもVB.NetやC#で使ってるからそっち使ってるわ。
340:デフォルトの名無しさん
22/12/30 11:56:52.21 KypYNh+sp.net
デコレータって関数受けて関数返せばデコレータと言っていいの?
それとも機能の追加が出来れば関数返さなくてもいいの?
デコレータの例が全部ラップしてるから関数返すものをデコレータっていうのかと思ったけど、Pythonの構文的には機能の追加が要件ぽくてよくわからん
341:デフォルトの名無しさん
22/12/30 12:18:32.93 +LXrKtXS0.net
それは高階関数かな
342:デフォルトの名無しさん
22/12/30 12:32:28.57 EYlolZ9wp.net
>>338
def deco (fn):
print("Good")
fn()
print("Good")
↑の関数は高階関数と言えるし、デコレータとも言える?
343:デフォルトの名無しさん
22/12/30 12:34:35.19 6lQGRZJ+d.net
>>339
デコレータとは、@decoの形で使用されることを想定している関数
ただそれだけのこと
344:デフォルトの名無しさん
22/12/30 12:39:12.89 EYlolZ9wp.net
>>340
def deco (fn):
print("Good")
fn()
print("Good")
と↑をラップした↓
def outer (fn):
def deco ():
print("Good")
fn()
print("Good")
return deco
だとそれぞれどういうメリットデメリットが想定できる?
この程度だったら何も変わらない?
345:デフォルトの名無しさん
22/12/30 14:25:39.66 v4ysyuF5a.net
>>341
前者はデコレータとして使用できない
後者は使用できる
それだけのこと
346:デフォルトの名無しさん
22/12/30 14:30:10.80 CAw5d3+3p.net
>>342
前者もデコレータとして使えるよ?
@decoで使うってことだよね?
347:デフォルトの名無しさん
22/12/30 21:59:47.08 i0HtXYTfp.net
>>343
自己解決しました
348:デフォルトの名無しさん
22/12/30 22:26:59.27 XgQsZPRMM.net
自己解決とは一体・・・ww
349:デフォルトの名無しさん
22/12/31 00:05:03.98 Y1CGuIqUp.net
>>345
自分のわかっていないところがわかりました
350:デフォルトの名無しさん
22/12/31 00:20:01.24 E+Koymh80.net
replitのpythonテンプレートを使っているのですが、実行すると勝手にパッケージをインストールしたりします。これを止める事は出来ますか?
351:デフォルトの名無しさん
22/12/31 00:20:01.95 E+Koymh80.net
replitのpythonテンプレートを使っているのですが、実行すると勝手にパッケージをインストールしたりします。これを止める事は出来ますか?
352:デフォルトの名無しさん
22/12/31 14:58:09.42 iYLc9PIz.net
main.pyのソースを見たときに
import ○○ #upm package(パッケージ名)
の行のコメントアウト外すと消えるかも>>348
353:デフォルトの名無しさん
23/01/01 18:58:07.86 QkrDyXxA0.net
ワークマンの売上高は10年で2.6倍 好調の背景に何があるのか
www.itmedia.co.jp/business/articles/2301/01/news011.html
ワークマンpythonらしいぞ
まーそうなるわな
354:デフォルトの名無しさん
23/01/01 19:36:11.17 ps54Dm7d0.net
スレチだけど...
> KPIを達成しても売り上げが伸びない場合、社員ではなく経営の責任ということになります。
> 『会社がやれと言った内容がそもそも間違っていたんだね』ということで
まあインタビュー記事だからいくつか盛ってるとは思うけどこれがそれなりでも浸透してるなら確かに強いと思うわ
355:デフォルトの名無しさん
23/01/01 21:38:32.18 OSWb6iEUM.net
>>350
ぶっちゃけ一番安上がりだからじゃね?
356:デフォルトの名無しさん (ワッチョイ 9a7d-hX/W)
23/01/01 22:00:13.33 UVAQFgfk0.net
ちょっと前のすれにtypecheckerが出てたけど、
仕事で静的型付けって意識してる?
Dropboxが静的型付け使って開発してるぜ~っていう記事を
ちょうど見かけたもんで。
URLリンク(navi.dropbox.jp)
357:デフォルトの名無しさん
23/01/01 22:16:25.00 2lDDSA+U0.net
実際には型が動的で有り難いことは殆どなくて、大抵は決まったものしか入らない
だからこそ型なんか書かなくていい、という思想な気がする
358:デフォルトの名無しさん
23/01/01 22:41:34.82 65g2Zgvwd.net
>>353
typing hint(+dats class) 、mypyももちろんオン。会社など複数人が関わるプロジェクトね。一人なら好きにやれば良い
359:デフォルトの名無しさん
23/01/02 12:12:57.71 XEDAh58aa.net
Windows環境で、「アプリと機能」の一覧に表示されるソフトウェア名一覧をPythonから取得するにはどうしたら良いですか??
URLリンク(tadaup.jp)
360:デフォルトの名無しさん
23/01/02 12:15:15.36 a90VB+UOd.net
レジストリ読む
361:デフォルトの名無しさん
23/01/02 14:11:49.16 VCjQSWZY0.net
WMI
362:デフォルトの名無しさん
23/01/02 17:01:40.21 mMdAew+l0.net
ChatGPTで答えさせて3つ出したコードのうちwmic使ったものを手直ししてみた
デコードをutf-8だったのをcp932にしたり文字列の整形あたりを改変しなきゃだったけどこういうとき結構良い答え持ってくる
Windows環境で、「アプリと機能」の一覧に表示されるソフトウェア名一覧をPythonから取得するにはどうしたら良いですか??
Windowsで「アプリと機能」の一覧を取得するには、次のような方法があります。
wmic コマンドを使用する
Windows Management Instrumentation (WMI) を使用する
PowerShell を使用する
以下は、いずれの方法もPythonから実行するための例を示します。
import subprocess
result = subprocess.run(['wmic', 'product', 'get', 'name'], stdout=subprocess.PIPE)
output = result.stdout.decode('cp932')
applications = [line.strip() for line in output.split('\n')]
for app in applications:
print(app)
363:デフォルトの名無しさん
23/01/02 19:23:19.67 gNyrLSWLd.net
>>359
すごい!ありがとうございます!
364:デフォルトの名無しさん
23/01/02 19:38:51.68 qfqFAF6wa.net
>>359
サンプルが少ないからほぼ直コピペなんだろうな
365:デフォルトの名無しさん (ワッチョイ 9733-QAWg)
23/01/02 20:50:28.36 xWUsdzOR0.net
自演はいいって
366:デフォルトの名無しさん (ワンミングク MM8a-+uJR)
23/01/02 21:06:38.35 gHhSLzFgM.net
すごくいいです
367:デフォルトの名無しさん (ワッチョイ 0754-i7z+)
23/01/02 21:08:42.90 9G/14EFS0.net
subprocessの書き方古くない?
368:デフォルトの名無しさん (ワッチョイ 9733-QAWg)
23/01/02 21:18:09.07 xWUsdzOR0.net
いやrunは新しいAPIだよ
369:デフォルトの名無しさん (ワッチョイ 0754-i7z+)
23/01/02 21:20:08.80 9G/14EFS0.net
cmdを起動せずにリストを渡すのと、cmdにコマンドの文字列渡すやり方があるよね
370:デフォルトの名無しさん
23/01/02 21:30:45.62 xWUsdzOR0.net
文字列渡すパターンは危険だからね
チェックをちゃんとしないと予期せぬコマンドが実行される
shell=Trueしてると特にやばい
371:デフォルトの名無しさん
23/01/02 21:32:02.96 9G/14EFS0.net
別にリストでも変わらないと思うけど
面倒なだけで
372:デフォルトの名無しさん
23/01/02 21:36:28.26 1k7qyNCA0.net
>>364
新しい書き方教えて
373:デフォルトの名無しさん
23/01/02 21:38:52.52 9G/14EFS0.net
時系列はよく知らんけど、リストで渡す方法がまずあって、
不便だからと文字列の方法が追加されたんじゃないの?
374:デフォルトの名無しさん
23/01/02 22:12:07.01 65aHjL4I0.net
shlex.split("date +%a")
# -> ["date", "+%a"]
run に渡すリストはこうやって作ると便利だよ (´・ω・`)
375:デフォルトの名無しさん
23/01/02 22:23:15.59 9G/14EFS0.net
普通にf文字列がいい
376:デフォルトの名無しさん
23/01/02 22:47:14.11 +OShonpv0.net
ModuleNotFoundError: No module named 'xml.etree'; 'xml' is not a package
ElementTreeでXMLを作成すると上のエラーがどうしても出てしまいます。
ElementTree以外にXMLがいじれるのって何がいいですか?
BeautifulSoupですか?
377:デフォルトの名無しさん
23/01/02 23:55:25.20 VCjQSWZY0.net
xml.pyかxmlなディレクトリがあるんちゃうか
ググっても同じこと書いてる記事多数
378:デフォルトの名無しさん
23/01/03 00:26:25.58 o2Yi6Z0r0.net
>>374
レスありがとうです。その記事を見て確認したんですけど特に問題はなく、それ以外の解決法も見当たらずでお手上げ状態です
379:デフォルトの名無しさん
23/01/03 00:37:01.34 hRecP/5n0.net
エラーが出ますは自力で解決しろとしか
ただの間違いなんだから
380:デフォルトの名無しさん
23/01/03 02:55:11.90 LZW0ef8O0.net
誰もやらないと思うけど
こんな感じのエスケープだと、失敗してしまう
(コマンドプロンプトやshell=Trueだと、成功する)
C:¥&
381:quot;Program Files"¥Python¥python.exe -V
382:デフォルトの名無しさん
23/01/03 06:11:34.42 cXTWG1PB0.net
そりゃ " " を剥ぎ取るとかは c m d.exe がやってるんだからそれを食わせたいなら同じ事をしてやらないと失敗するのは当たり前
383:デフォルトの名無しさん
23/01/03 09:57:15.62 LZW0ef8O0.net
文字列で渡すときはWinAPIのCreateProcessを見てね
って、書いてあったわ
実行ファイルの解釈から違うとは思わなかった
すまん
384:デフォルトの名無しさん
23/01/03 15:48:59.80 E/lRcWz50.net
ファイル名の取得という基礎の基礎が
ようやく安定したレベルですまない。
import glob
files = glob.glob("./images/**", recursive=True)
print("recursive", files)
フォルダ直下にjpgファイル21個のみ入っている場合、結果が、
recursive [1.jpg 2,jpg,~,21.jpg]
と横長に表示されると思う。
これをExcelに貼り付けたときも同じかな。
これを縦に表示させることってできる?
recursive[
1.jpg,
2.jpg,
|
21.jpg]
みたいなイメージで結果を出力したい。
そもそもできることなのか分からないけど、
素直にWordに貼り付けて、
カンマを特殊文字で改行に置き換えた方がはやいかな?
385:デフォルトの名無しさん
23/01/03 16:00:07.29 xk3Wdt8AM.net
>>380
“\n”.join(files)
386:デフォルトの名無しさん
23/01/03 16:04:23.85 HKIHgf/70.net
globはいろいろ謎だよな
歴史的な何かとの互換性で微妙に使いにくい
387:デフォルトの名無しさん
23/01/03 16:06:39.39 HKIHgf/70.net
とりあえず、import glob はやらなくて、
from pathlib import Path
p = Path("./")
for file in [str(x) for x in p.glob("*")]:
print(file)
みたいに使ってるけど、これでもしっくり来ない
388:デフォルトの名無しさん
23/01/03 16:15:41.39 97qfA6UK0.net
自分でフィルタしたいならos.walk
389:デフォルトの名無しさん
23/01/03 16:25:05.94 E/lRcWz50.net
>>381
ありがとう。
一見すると、単に","が"n"に変わっただけのように見えるけど、
Excelに貼り付けたときの挙動がまったく異なるんだね。
しかし検索してもアフィみたいなサイトしかなくて大変だな
入門書探してみるノシ
390:デフォルトの名無しさん
23/01/03 17:15:05.41 90wq8UOz0.net
\nただの改行だよ
391:デフォルトの名無しさん
23/01/03 18:00:04.32 E/lRcWz50.net
失礼。
print("\n".join(files))
こういうことね。
392:デフォルトの名無しさん
23/01/03 22:20:57.30 dIZcTCs/0.net
定期的に
tuple[str, tuple[int200個]] #key: valueです
を1万件取得して
既存の辞書に追加、更新していきます
このときkeyがなければkey, valueを登録するのはいいとして
keyが既存のときのvalueの更新はどうするのが常道ですか? 高速なのがいいです。または不要な書き換えがないほうがいいです
valueに差異があれば書き換え がいいのか、問答無用で全部更新しちゃうべきなのか…
393:デフォルトの名無しさん
23/01/03 22:55:20.83 97qfA6UK0.net
理解も進むしベンチとるのがいいよ
すでに新しいタプルを構築してるなら問答無用でいいと思うけどね
キーの確認や差異がないかしらべるコストもゼロじゃないし
394:デフォルトの名無しさん
23/01/03 22:58:56.25 n4oKw/VOa.net
データベースで言う、upsert だろ。
データが無ければinsert、有ればupdate
基本中の基本
395:デフォルトの名無しさん
23/01/04 01:07:35.19 O+gUhHpWM.net
30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!
396:デフォルトの名無しさん
23/01/04 08:56:21.55 fFs0aGwQ0.net
perlから来るとkeyが既にあるか無いか気にしないといけないdictがうざくて仕方ない
397:デフォルトの名無しさん
23/01/04 10:43:47.27 xfkX5cN10.net
dictを継承したmydict作って、setitemをオーバーライドすればいいんじゃない?なんかその辺のパッケージにありそうだけど
398:デフォルトの名無しさん
23/01/04 11:09:24.58 fFs0aGwQ0.net
autovivificationは便利だけどどう考えても邪悪なのでpythonには似合わないとは思う
多次元のdictとか何も考えずに作れて楽なのに
399:デフォルトの名無しさん
23/01/04 11:54:12.95 3yoX2IMb0.net
perlから来たからdefaultdictを知らないってことか
400:デフォルトの名無しさん
23/01/04 11:57:20.58 PRI0tLaEM.net
defaultdictとか関係なくないか?
単にfoo[key] = valueってしてけばいいだけの話じゃないの?
401:デフォルトの名無しさん
23/01/04 12:17:46.09 fFs0aGwQ0.net
文章に単語が何回登場したかカウントする
みたいなことをしたい時に、
if word in count:
count[word] += 1
else:
count[word] = 1
みたいに毎回判定が入る
perlなら問答無用に
$count[$word] += 1;
で済んでしまう
402:デフォルトの名無しさん
23/01/04 12:21:49.86 fFs0aGwQ0.net
で、この場合はdefaultdictで解決できるのだけれど、
そうも行かないケースがままある
403:デフォルトの名無しさん
23/01/04 12:27:21.02 3yoX2IMb0.net
そうもいかないケースを挙げてみ?
404:デフォルトの名無しさん
23/01/04 13:21:09.09 hHvDsnQT0.net
俺はこっち派
count[word] = count.get(word, 0)+1
405:デフォルトの名無しさん
23/01/04 14:05:48.69 hsLqwQpIM.net
>>397
質問とは関係ない話だったのか
defaultdictをわざわざ使わなきゃいけないのは面倒だとは思うがパフォーマンスに影響するところだから違うものとして分ける考え方も理解できる
406:デフォルトの名無しさん
23/01/04 16:11:58.90 Y9cKLIFN0.net
>>397
いいんじゃないの
上に書いてる奴は見れば一瞬で理解できる
407:デフォルトの名無しさん
23/01/04 16:31:04.37 nnn7+JHJ0.net
perlの糞文法の轍を踏まず、perl屋さんが億劫に感じる方向でおながいしまつ
408:デフォルトの名無しさん
23/01/04 16:33:02.89 s5vEki4Ca.net
そりゃ言語が違うんだから当たり前だろ
そんなにperlが好きなら一生perl浸かってろ
409:デフォルトの名無しさん
23/01/04 16:46:54.88 169GBKXC0.net
Perlはこそっと使え
決して異教徒の目に触れさせるな
410:デフォルトの名無しさん
23/01/04 17:03:28.83 fFs0aGwQ0.net
初期化してない変数をいきなり参照したら0で構わないと思うんだけどな
99%はバグってるんじゃなくて初期化を忘れ�
411:スだけなんだから
412:デフォルトの名無しさん
23/01/04 17:46:01.10 R0FkSoR+6.net
バグの原因を初期化忘れだけに絞れるなら恩恵としては大きいな
413:デフォルトの名無しさん
23/01/04 18:04:46.20 lFNs7lW+0.net
>>406
> 99%はバグってるんじゃなくて初期化を忘れただけなんだから
根拠の無い妄想はブログとかでやってくれ
414:デフォルトの名無しさん
23/01/04 18:08:36.66 hHvDsnQT0.net
>>406
99%は言い過ぎ
415:デフォルトの名無しさん
23/01/04 18:23:39.40 fFs0aGwQ0.net
関数内の0や""で初期化してる処理を、スコープ先頭に移して挙動が変わるかどうか
変わらないならそれは省略可能だった初期化
416:デフォルトの名無しさん
23/01/04 18:23:43.29 oLi3mo910.net
>>406
そこはNoneでいいだろ。つか、初期化してなきゃ型も決まらないから0にもしようがない。
417:デフォルトの名無しさん
23/01/04 18:50:16.06 fFs0aGwQ0.net
だからこその動的型付けで、0だったことにする
文字列として参照されてたら""だったことにする
dictとして参照されてたら{}だったことにする
418:デフォルトの名無しさん
23/01/04 18:53:52.08 rMcGd+esd.net
>>412
それ別のバグ生み出しそう
型の違いって致命的じゃね
419:デフォルトの名無しさん
23/01/04 19:06:24.67 oLi3mo910.net
>>412
数値として参照されたか文字列として参照されたかってどう判断するつもり?
420:デフォルトの名無しさん
23/01/04 19:09:25.07 fFs0aGwQ0.net
perlはそのへんを、お前は人工知能か何かなのかという精度で判定してくれてた
普通に考えると確定しないようなケースでも何故か正解する
失敗すると発見不可能なバグになるから封印したんだろうな
421:デフォルトの名無しさん
23/01/04 20:10:19.57 JBcAh0Lfd.net
rubyキチガイといいこいつといい多言語は~って奴は聞いてもないこと話してきてウザい
422:デフォルトの名無しさん
23/01/04 21:31:42.96 oLi3mo910.net
そりゃperlと同じようなコンテキストの考え方を導入しなきゃ無理だな。
少なくとも、数値の加算と文字列の連結に同じ'+'演算子を使ってるpythonは
そのへん全部ひっくり返さないとならない。
423:デフォルトの名無しさん
23/01/04 21:39:33.83 fFs0aGwQ0.net
+される相手が文字列なら文字列
424:デフォルトの名無しさん
23/01/04 21:48:59.92 QnXxsDbw0.net
Option Explicit On
なんてやったら阿鼻叫喚か
425:デフォルトの名無しさん
23/01/04 22:01:32.73 lFNs7lW+0.net
>>418
両方初期化してない変数ならどうするんだ?
426:デフォルトの名無しさん
23/01/04 22:08:13.33 169GBKXC0.net
降魔の儀式を始める
427:デフォルトの名無しさん
23/01/04 23:09:43.15 fFs0aGwQ0.net
a = b + c
でbもcも未初期化なら、aも未初期化で何も困らない
428:デフォルトの名無しさん
23/01/04 23:58:47.37 PU4coe7B0.net
初期化すべきなのに忘れていて
忘れたものを忘れたまま使おうという発想が理解できない
そんなコードもコーダーも使い物にならない
429:デフォルトの名無しさん
23/01/05 00:00:28.67 UaHb0F9a0.net
>>417
呼ばれるメソッドはちがうよ割と大昔から
URLリンク(docs.python.org)
430:デフォルトの名無しさん
23/01/05 00:03:39.00 /79BsoYR0.net
>>422
そりゃ結局None。
変数の初期化はこの際関係なくて None + int -> int で None + str -> str になってほしいってことなんだろ。
431:デフォルトの名無しさん
23/01/05 00:05:55.35 /79BsoYR0.net
>>424
左辺の型が決まらないことには呼びようがないんじゃね?
432:デフォルトの名無しさん
23/01/05 07:49:37.10 DuFbe6wEd.net
Perl好きならPerl使ってろよ
433:デフォルトの名無しさん
23/01/05 08:03:01.51 0egeTroNM.net
いい加減perlおぢさんウザイな
荒らしてるという自覚は無いんだろうな
434:デフォルトの名無しさん
23/01/05 08:37:29.48 MKhVdLEmr.net
頭がPerl
435:デフォルトの名無しさん
23/01/05 08:54:26.68 qYGcpxae0.net
おっぱいがPython
436:デフォルトの名無しさん
23/01/05 08:54:31.46 XvyJyDBe0.net
暗黙より明示のルール�
437:ノ反してるから可能だとしてもやらないだろう 変数を参照するだけか書き換えもするかで名前空間が変わるのは結構暗黙的だと思うけど、 それは利便性が優先した 初期化を省略するのはそんなに利便性が無い
438:デフォルトの名無しさん
23/01/05 08:57:08.87 O+NRT3S+0.net
利便性が無いというかタイプミスを検出できなくなるから
439:デフォルトの名無しさん
23/01/05 13:08:24.65 A7vAZ1Ex0.net
ミスはしませんw
440:デフォルトの名無しさん
23/01/05 13:28:28.85 XvyJyDBe0.net
タイプミスしたら使ってない変数が現れるんだから、それは簡単に検出できる
441:デフォルトの名無しさん
23/01/05 14:43:39.73 O+NRT3S+0.net
>>434
どうやってやるの?
442:デフォルトの名無しさん
23/01/05 14:53:37.34 XvyJyDBe0.net
チェッカーにかける
443:デフォルトの名無しさん
23/01/05 16:58:05.12 Ej4/aJA/0.net
str型限定だけど、型を自動的に変更してくれるというのはちょっとありがたいかも
format()やf文字列だと、変数をそのまま突っ込めばいいので楽ちん
444:デフォルトの名無しさん
23/01/05 17:05:39.43 DbVL8BP10.net
自動変換は悪さにしか使われないという印象だからいらないかな
perlみたいに言語がよしなにやってくれるならそれで良いけど
ユーザー定義の暗黙の型変換は間違いなく地獄
445:デフォルトの名無しさん
23/01/05 17:13:54.28 /79BsoYR0.net
C++の変換コンストラクタとかな。
自分でそれを意図して書く人にとってはそのときは楽だろうけど、後から読む人が大変。
446:デフォルトの名無しさん
23/01/05 17:27:10.71 s7+Erfl9p.net
JSにおけるTSみたいなのってPythonでは作られないのかな
447:デフォルトの名無しさん
23/01/05 17:31:18.16 AfQblY9wd.net
Pythonには型アノテーションがあるから不要
TypeScriptの超柔軟な型付けを想像してるとガッカリするが
448:デフォルトの名無しさん
23/01/05 17:54:22.11 AqbKvwuBd.net
>>434
その使ってない変数が初期化されてて使えるといいって話が>>406でしょ
初期化忘れよりタイプミスの方が遙かに多いだろw
449:デフォルトの名無しさん
23/01/05 18:02:36.57 XvyJyDBe0.net
変数名や関数名をタイプするのなんか最初の1回だけだしな
450:デフォルトの名無しさん
23/01/05 18:15:14.05 AqbKvwuBd.net
タイプしないならどうするの?
まさかマウスポインタ操作するの?
451:デフォルトの名無しさん
23/01/05 18:41:22.77 XvyJyDBe0.net
マジで、変数名はコピペしかしない習慣にした方がいいよ
あるいは自動入力
アニメに出てくるハッカーじゃないんだから、キーボード叩きまくるスタイルは良くない
452:デフォルトの名無しさん
23/01/05 18:44:43.59 WQABuOJr0.net
Pythonが「メインの利用言語」で2位にとどまる、1位に立ったのは定番のあの言語
URLリンク(xtech.nikkei.com)
453:デフォルトの名無しさん
23/01/05 18:45:50.33 6GZFvj4Q0.net
コピペよりインテリセンス?オートコンプリート?をよく使う
454:デフォルトの名無しさん
23/01/05 19:02:35.19 uFuuDD5j0.net
読者アンケートの結果ごときで
会員登録で続きをご覧いただけますと来たか
455:デフォルトの名無しさん
23/01/05 19:18:25.74 DbVL8BP10.net
変数のレキシカルスコープを導入してくれ
456:デフォルトの名無しさん
23/01/05 19:39:15.56 +qdyai3T0.net
そういうのって登録するとわんさかスパムメールが届くことになる
457:デフォルトの名無しさん
23/01/05 20:37:35.36 aM58GnUZp.net
Pythonはレキシカルスコープ採用してるって出てくるけど変数のレキシカルスコープはまた違うの?
458:デフォルトの名無しさん
23/01/05 20:37:52.79 AqbKvwuBd.net
>>445
使ってない変数が現れたら簡単に検出できるんでしょ?
ならコピペする必要なくない?
459:デフォルトの名無しさん
23/01/06 16:48:17.73 YIB2cDqha.net
>>440
Nim 便利ょ
460:デフォルトの名無しさん
23/01/06 17:02:10.21 nq1XWMD+0.net
ちょっと文法が似てるだけの別言語やん
461:デフォルトの名無しさん
23/01/06 17:04:24.79 csJ7DXSap.net
>>453
Nim良さそうだけど全然流行ってる感じないね
そもそもPythonがライトユーザー向けに適合し過ぎてて進化の必要ないのかもね
462:デフォルトの名無しさん
23/01/06 17:36:13.11 YIB2cDqha.net
別言語だけど python と相性良い方
463:デフォルトの名無しさん
23/01/06 17:41:53.43 nq1XWMD+0.net
JavaとJavaScriptくらい違う
464:デフォルトの名無しさん
23/01/06 17:45:56.69 DjpXTv+h0.net
ほな一緒やないかい
465:デフォルトの名無しさん
23/01/06 20:18:53.27 Hxt0hqaC0.net
どこがやねーんっ
466:デフォルトの名無しさん
23/01/06 23:55:41.03 Hw74BWkVd.net
pythonを-cオプションでワンラインフィルタ作るときって便利なやり方ない?
これ相当のものをワンラインで書けるようにしたい
def inputs():
while True:
try: yield input()
except EOFError: return
for x in inputs(): print(x.upper())
EOFErrorの無視は終了コードが失敗になるから不可
sys.stdin.read().split("\n")利用はstdinのバッファリングのオンオフを切り替えられないから不可
467:デフォルトの名無しさん
23/01/07 00:31:00.42 xLvAB63F0.net
python -uc 'import sys; sys.stdout.writelines((print(x) or x.upper()) for x in sys.stdin)'
これだと行バッファ不可避だからsys.stdin.read(n)で書かんとか
468:デフォルトの名無しさん (ワッチョイ 7110-9O0i)
23/01/07 00:38:08.36 xLvAB63F0.net
多用するならPerlの-pe/-ne相当になるモジュール用意してフィルタだけ書くスタイル
469:デフォルトの名無しさん
23/01/07 00:49:55.38 lVhOhIz00.net
M1 Macでfor文を勉強中なんだけど、
names = ['A', 'B', 'C']
for name in names: print(name +'さん')
これをターミナルで実行しても
「・・・」
と表示されるだけで何の反応もない
M1だから、でしょうか。
あとでWindowsでも試してみる
470:デフォルトの名無しさん
23/01/07 01:24:54.56 4BI3EQQz0.net
もっかいエンター押せ
471:デフォルトの名無しさん
23/01/07 02:01:54.97 GmV1yQnL0.net
ここに書けるなら、Sandbox にも書けるだろう
472:デフォルトの名無しさん
23/01/07 02:09:26.56 WGkjV5JA0.net
>>463
釣りはやめろ
473:デフォルトの名無しさん
23/01/07 03:23:48.08 odL5Q3k30.net
>>462
ああそうか 単にフィルタ部だけ受け取ってexecしてしまえば楽だったか
ありがとう
474:デフォルトの名無しさん
23/01/07 04:05:10.65 79bETjVCM.net
特定のフォルダを5分おきに監視して、新たに作成されたファイル名を
SQLiteテーブルに登録していく…的なことをやりたい
単なるループで作るとCPU食って固まってしまうので非同期処理をする
必要があると思うんだけど、テンプレみたいなコードどっかにないですかね
asyncとかドキュメント見ても難しくて理解できないので…
475:デフォルトの名無しさん (アウアウウー Sa85-vxq+)
23/01/07 06:05:45.34 dqXrk0CZa.net
cron
476:デフォルトの名無しさん
23/01/07 07:43:49.02 amZltHqL0.net
なんでるーぷだとcpu食って固まるの?
477:デフォルトの名無しさん
23/01/07 07:44:51.16 GR5Mm1St0.net
cpuに食えるだけ食わせるからだよ
478:デフォルトの名無しさん
23/01/07 07:53:52.52 dqXrk0CZa.net
Ruby で、1行ずつ読み込んで処理する、1-liner のフィルタは、
ls | ruby -lne 'print $_.upcase'
ARGF を1行ずつ読み込んで、変数$_ に格納する。
ARGF とは、複数のファイルや標準入力を連結して、1つにした仮想ファイル
ruby -lne 'print $_.upcase' a.txt b.txt
479:デフォルトの名無しさん
23/01/07 08:28:19.88 GENmLOTj0.net
>>46
480:8 https://pypi.org/project/watchdog/ とか libev/libeventのバインディングなら他もたくさん
481:デフォルトの名無しさん (ワッチョイ 11cf-DSRP)
23/01/07 09:51:45.92 E1WCWcUY0.net
>>468
それ非同期処理は関係なくね?
というかIOを非同期にしてスレッドが待たなくなったらよけいにCPUを回すことになると思うが。
482:デフォルトの名無しさん (ワンミングク MMd3-4fYz)
23/01/07 09:59:59.53 QtB2nOqPM.net
sleep挟むだけじゃない?
483:デフォルトの名無しさん (ワッチョイ 5b5c-FOYR)
23/01/07 10:00:12.84 rucp1FJJ0.net
inotify
484:デフォルトの名無しさん (ワッチョイ b954-Or7w)
23/01/07 11:05:11.37 11syE16N0.net
一瞬でもいいからsleepを入れておけばOSがいい感じにやってくれる
それせずに固まってしまうフリーソフト多すぎ
例えば、JaneStyle
485:デフォルトの名無しさん (テテンテンテン MM4b-uuhX)
23/01/07 11:10:22.66 79bETjVCM.net
>>474
うーん実は非同期という概念すら理解できていないかも知れない
>>468のループを裏で動かしつつWindowsやアプリも普通に操作したいって話です
>>477
マジっすか
sleepで5分待たせるだけでいいなら簡単だからやってみます
486:デフォルトの名無しさん
23/01/07 11:53:06.20 iltXkPxC0.net
固まってしまうのは
メインスレッドで重い処理したり止めたりして
メッセージを処理しないからかな
487:デフォルトの名無しさん
23/01/07 12:02:42.84 11syE16N0.net
単純にメモリ内で巨大な配列の計算をしたいとかで、
人間が判るほど時間のかかる処理をする時に、
ループの中に微小なsleepを入れておくと、そのタイミングでOSがタスク切り替えできるので、
他のアプリに影響せずに処理できる
win10になってタスクをより奪いやすくなってる気がする
488:デフォルトの名無しさん
23/01/07 12:07:18.18 UFnoM8jpd.net
sleepってその間メッセージの処理できるの?
489:デフォルトの名無しさん
23/01/07 12:12:22.31 VzD178C+M.net
sleepしたスレッドは他の処理はできないけど
他のスレッド・プロセスは関係ない
490:デフォルトの名無しさん
23/01/07 12:54:52.65 QtB2nOqPM.net
sleep(1)を300回回して終了フラグチェックとかにしても良い
491:デフォルトの名無しさん
23/01/07 18:13:33.04 Ht7NUaQk0.net
>>468
5分おきと言わず、ファイルシステム変更イベントを受け取るイベントドリブンにした方がいいと思う
OSによって必要なコマンドやAPIは違うと思うけど
492:デフォルトの名無しさん
23/01/07 18:19:06.23 5L5/eVw7M.net
30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!
493:デフォルトの名無しさん
23/01/07 18:22:53.32 +xj7TcwR0.net
Windows限定でいいなら、.netのAPI
FileSystemWatcherが使えると思う
494:デフォルトの名無しさん
23/01/07 21:31:02.61 J6NwEuodM.net
>>473が書いてるwatchdogが定番ツールで
OSごとの差異を吸収してくれるよ
Linuxならinotify
WindowsならReadDirectoryChangesW(FileSystemWatcherがラップしてるWin32API)
macOSならFSEvent
495:デフォルトの名無しさん
23/01/07 21:42:10.72 11syE16N0.net
watchdogと言われると、モニタするんじゃなくて、止まってたらリセットするイメージが強いけど
496:デフォルトの名無しさん
23/01/08 00:08:32.18 GLDV6Cyi0.net
常駐フォルダ監視、なにかあったらどうにかする
処理はもう脳死でwatchdog一択というくらい定番
497:デフォルトの名無しさん
23/01/08 00:17:02.60 PbsTDkd50.net
どう実装してもいいけど
増えて消えたとかの一瞬も捉えたいならイベントドリブンで監視する必要がある
498:デフォルトの名無しさん
23/01/08 00:33:09.12 QuJ5Wt8K0.net
>>480
> ループの中に微小なsleepを入れておくと、そのタイミングでOSがタスク切り替えできるので、
いつの時代の人なんだよw
他のアプリに影響したくないなら優先度下げろよ...
499:デフォルトの名無しさん
23/01/08 00:34:59.79 QuJ5Wt8K0.net
>>488
組込屋さんかな?
500:デフォルトの名無しさん
23/01/08 01:19:18.86 nr72jIvE0.net
watchdogなんて便利なのあるのか・・・
501:デフォルトの名無しさん
23/01/08 04:46:18.93 mDwtjJAva.net
5分sleep すると、プロセスを殺せない・生き続けるから、
その分だけ、メモリなどのリソースが使えなくなるので損
cron みたいに、その時だけ起動して、
処理が終わったら、プロセスを終了するのが良い
それかRuby on Rails, npm/yarn などのagile 開発でよく使う、webpack-dev-server みたいに、
フォルダをwatch して、ファイルが変更されたら、rebuild するとか
502:デフォルトの名無しさん
23/01/08 13:39:55.68 LG3PUlqC0.net
>>491
優先順位下げるとしても無限ループにsleepを入れない実装は時代とは無関係かな
503:デフォルトの名無しさん
23/01/08 13:50:26.68 QuJ5Wt8K0.net
>>495
何のために入れる必要あるのか説明してみ
504:デフォルトの名無しさん
23/01/08 14:06:13.97 oudk2sNr.net
インスタンスメソッドをインスタンスメソッドの中で定義したいんだけどみんなどうやってるの
AIに聞いたらこんな感じだったけど
class Hoge:
def __init__(self):
self.new_method=None
def hoge1(self):
def _method():
print("hoge method1")
setattr(self,"new_method",_method)
def hoge2(self):
def _method():
print("hoge method2")
setattr(self,"new_method",_method)
h=Hoge()
h.hoge1()
h.new_method()
h.hoge2()
h.new_method()
505:デフォルトの名無しさん
23/01/08 14:13:05.44 ZWf/GgJ8d.net
VBで言うループ内のDoEvents()だよ
OSのメッセージへの応答が止まり続けると応答なしになる
だからメッセージに応答させるためにsleepを入れる
CPUの優先度を上げ下げしようがメッセージへの応答は各アプリケーションに依存する
だからループの時間が長くなればどのみちメッセージの処理ができず応答なしになる
506:デフォルトの名無しさん
23/01/08 14:16:48.76 LG3PUlqC0.net
>>496
何が言いたいのか知らんけど、CPU張り付きによるキーボード等の割り込みが阻害されるためだろう
古いとか言われて短い無限ループにsleep入れないプログラマいたら驚くかな
一人でプログラミングしてるならまだしも、第三者が使う可能性がある状況でその実装は恐い
507:デフォルトの名無しさん (ワッチョイ 9301-Kria)
23/01/08 14:35:43.73 QuJ5Wt8K0.net
>>498
メッセージループの話はまた別の話
>>499
プリエンプティブマルチタスク でググってこいよ...
未だにこんなロートルがいることに驚くわ
508:デフォルトの名無しさん (ワッチョイ 2bce-jGTX)
23/01/08 14:48:33.70 zCdq2/Tv0.net
1C/1TなCPUの時代に生きているのだろう
509:デフォルトの名無しさん
23/01/08 15:25:04.09 Aip5FLUqd.net
>>500
優先度変更でメッセージループをどうにかできるの?
510:デフォルトの名無しさん
23/01/08 15:41:35.19 QuJ5Wt8K0.net
>>502
メッセージループをどうにかできるなんて書いてないんだけど、頭大丈夫?
511:デフォルトの名無しさん
23/01/08 15:43:30.25 jwImvjcq0.net
>>501-502
見当外れだしsleepのひとも含め連休は大量ですね
512:デフォルトの名無しさん
23/01/08 15:47:25.43 NFnoEEjj0.net
実際問題として、処理奪われて操作に支障が出るソフトは普通にある
win10ではそういう問題はOSでは解決できない
513:デフォルトの名無しさん
23/01/08 15:47:46.10 1vx7bEHHM.net
どれだけググってもビジュアルスタジオにtweepyインストールできなくて
だれかおしえろください
ターミナルでpip打ち込むと認識されないとエラーで弾かれる
514:デフォルトの名無しさん
23/01/08 15:54:10.06 kQpMGlzxd.net
>>503
なら優先度だけあげても他の対策がいることになるだろ?
解決しないじゃん
515:デフォルトの名無しさん
23/01/08 15:56:00.30 hARfQwsA0.net
今時の他コア高性能CPUであれば100%張り付きで懸念するべきのはバッテリー残量と発熱くらいで、
一瞬でも100%未満になるコアが1つあればOSのタスクスイッチングには影響はほとんどないよ
GetMessage,PeekMessage,DispatchMessageをブロックしないことだけ気をつければ、あとは思う存分CPUをぶん回してもいいよ
100.00%まできっちり回せ
516:デフォルトの名無しさん
23/01/08 15:57:22.58 PbsTDkd50.net
>>506
pip3
517:デフォルトの名無しさん
23/01/08 15:59:45.54 QuJ5Wt8K0.net
>>505
それはそのソフトのつくりがタコなだけ
>>507
VBのDoEventの話なんてしてないから他所でやってくれ
518:デフォルトの名無しさん
23/01/08 16:01:44.72 kQpMGlzxd.net
>>503
>>491
優先度でメッセージループをどうにもできない以上、他のアプリに出る影響は排除できないじゃん
影響出したくないからループ中にsleepって話の中で優先度変えろって話出したの誰だよw
519:デフォルトの名無しさん
23/01/08 16:05:00.60 piRgm1WA0.net
つまり多コアCPUであっても、各プロセスは一つだけしか使ってはいけない
520:デフォルトの名無しさん
23/01/08 16:05:59.38 kQpMGlzxd.net
>>510
タコなソフトにならない解決策の話なのに優先度なんて頓珍漢なこと言い続けてる自覚ねーのな
DoEvents()も書けない、コピペすらできないみたいだし、
何のためのsleepか説明されても理解できそうにないな
521:デフォルトの名無しさん
23/01/08 16:10:11.55 96z64ttd0.net
ここをこうしたら、こういう時にこうなるよ
って話をしないと、伝わらないと思います
522:デフォルトの名無しさん
23/01/08 16:11:53.62 piRgm1WA0.net
伝えるというよりからかっているのだろう
523:デフォルトの名無しさん
23/01/08 16:14:15.67 NFnoEEjj0.net
ID:QuJ5Wt8K0 で抽出すると、ほんの一言二言書いて反応をうかがってるだけなんだよな
多分何も判ってなくて、総叩き状態を楽しんでる
524:デフォルトの名無しさん
23/01/08 16:49:42.13 +2bxRzY60.net
>>497
インスタンスメソッドの中でインスタンスメソッドを定義したとして、使う側はどうしたいんだよ
h.hoge() を読んだら h.new_method() を使えるようになる仕様でいいのか?
525:デフォルトの名無しさん
23/01/08 17:48:05.51 Ghk4Hd5x0.net
DoEvents、自アプリのメッセージを1つ実行する
sleep、CPUリソースを一時的に返却する(自アプリのメッセージは処理できない)
sleepしたところで自アプリのメッセージを処理しないと自アプリは固まってしまう
526:デフォルトの名無しさん
23/01/08 18:07:15.82 QuJ5Wt8K0.net
>>511
メッセージループを処理するスレッド(たいていメインスレッド)と >>480 が言うような重い処理のスレッド(ワーカースレッド)を分ければいいだけ
ってかまともなGUIアプリなら半ば常識だぞ
当たり前だけどワーカースレッドにsleepなんて要らん
>>513
> 何のためのsleepか説明されても理解できそうにないな
そう言うのは説明してから言わないとね
>>516
> 多分何も判ってなくて、総叩き状態を楽しんでる
分かってないのはお前な
ちゃんと プリエンプティブマルチタスク でググれって書いてあるだろ?
ググっても理解出来なかったのか?w
527:デフォルトの名無しさん
23/01/08 18:11:48.35 QuJ5Wt8K0.net
>>518
DoEventsなんて言ってる奴はVBAあたりしか使えないんだと思う
DoEventsとsleepの違いすら理解できてないんだろうな
528:デフォルトの名無しさん
23/01/08 18:13:12.88 piRgm1WA0.net
ググれと言わずに、ここで簡潔に説明することが求められています
そんなに難しいことじゃないでしょうに
529:デフォルトの名無しさん
23/01/08 18:22:37.54 2bjH6Dg5d.net
>>519
優先度の話はどこがどう関係してくるの?
530:デフォルトの名無しさん
23/01/08 19:23:01.26 QuJ5Wt8K0.net
>>521
難しくないならあんたが説明してもいいんだよ?w
>>522
話の流れも読めないのか?
>>491 > 他のアプリに影響したくないなら優先度下げろよ...
531:デフォルトの名無しさん
23/01/08 19:28:01.59 piRgm1WA0.net
オレは説明を聞きたいと思っている
532:デフォルトの名無しさん
23/01/08 19:30:28.58 NFnoEEjj0.net
ソフトのつくりがタコとか書いちゃった時点でもう詰んでるんだよ
どう言い繕っても無駄なので諦めてID変わるのを待ってろ
533:デフォルトの名無しさん
23/01/08 19:53:03.23 QuJ5Wt8K0.net
>>524
だから プリエンプティブマルチタスク でググればいいだろ
まああんたはわかってるだろうけど簡単に言えばタスクの切り替えはタイマーでやってるからsleepなんか入れなくてもタスクは切り替わる
> ループの中に微小なsleepを入れておくと、そのタイミングでOSがタスク切り替えできるので、
なんて言うのはWindows 3.1とかMac OS 9時代のノウハウや
>>525
タコ乙w
534:デフォルトの名無しさん
23/01/08 20:28:28.98 NFnoEEjj0.net
現にwin10でも上手く行っとらんだろ
事実から目を反らすなよw
535:デフォルトの名無しさん
23/01/08 21:06:12.49 oudk2sNr.net
>>517
例えば犬の基本情報を取得したい時に
Symbols={"INU":{"symbol":"犬","voice":"ワン"}}
print(Symbols["INU"])
じゃなくて
print(Symbols.INU)
みたいな参照の仕方がしたかった
かつ返ってくるのはインスタンス、みたいな
クラスをインスタンス化するときってSymbols()でカッコついちゃうのでそれ無くしたいというか・・
なので単純に
URLリンク(ideone.com)
てやってみたけどinu_action,neko_actionのとこが見た目がしっくりこなくて
あれから調べてみたらやりたいのは内部クラスだったかもしれないのでそれで書いてみたら
URLリンク(ideone.com)
こうなって、しっくりきたものの使い方合ってるのかがわからない
536:デフォルトの名無しさん (ワッチョイ 9379-G8G4)
23/01/08 21:15:22.42 Ghk4Hd5x0.net
>>526
Windows3.1はシングルタスクだよね
sleepしても他アプリに処理が移らなそう
処理時間が無駄に長引くだけ
昔過ぎて分からない
間違ってるかも
537:デフォルトの名無しさん (ワッチョイ 9301-Kria)
23/01/08 21:23:02.60 QuJ5Wt8K0.net
>>527
具体的に上手くいってないと言うソフト名出してみ
538:デフォルトの名無しさん
23/01/08 21:27:28.97 QuJ5Wt8K0.net
>>529
Windows 3.1 は協調型マルチタスク(=ノンプリエンティティブマルチタスク)
てかマジでググれ
URLリンク(www.sophia-it.com)
539:デフォルトの名無しさん
23/01/08 21:46:05.89 Ghk4Hd5x0.net
>>531
あ、いやすまん
もっと基本的なところで勘違いしてた
Windows3.1ってメインのウィンドウ以外動かないかと思ってた
540:デフォルトの名無しさん
23/01/08 22:05:28.27 piRgm1WA0.net
3.1のデモ展示では時計アプリを複数起動して
「ほら、マルチタスクですよ~」ってやってた
541:デフォルトの名無しさん
23/01/08 22:20:53.05 Ghk4Hd5x0.net
>>533
なるほどサンクス!
完全に勘違いしてた
542:デフォルトの名無しさん
23/01/09 09:18:26.66 hshZ5aP/d.net
>>528
直接attrにアクセスするような書き方するなら__getattribute__を改造するのが手っ取り早そう
URLリンク(wandbox.org)
直接dictを継承したSymbolsクラス作った方が楽そうと
後になって気づいたが
543:デフォルトの名無しさん
23/01/09 11:26:49.00 UbXmK8tM0.net
プリエンプティブに対応するパッチを書いたことあるがロートルとか言われたのがショックだわ
モバイル全盛のこの時代にCPU100%の張り付きプログラムを推奨することの視野の狭さに驚く
何度も言うがsleepを入れるのは時代とか関係なくそれはアーキテクチャと利用ケースによるものだ
組み込み分野では無限ループでトリガ待ちするのに無限ループで止めるのなんて20年以上前からやってる
544:デフォルトの名無しさん
23/01/09 12:18:22.83 Cob0L2LA0.net
>>536
逆にuComとかPICだとメインはfor(;;)で最低優先度の処理をsleepなしでゆるゆる回して、
ほとんどの処理を割り込みで動かすからsleepの出番はなくなっちゃうよね
545:デフォルトの名無しさん
23/01/09 12:18:48.74 Cob0L2LA0.net
sage忘れすまん
546:デフォルトの名無しさん
23/01/09 12:30:53.45 r84aUeSC0.net
動かす環境やOSによっても色々やり方は変わると思います
547:デフォルトの名無しさん
23/01/09 12:35:24.04 WbC15m7a0.net
プリエンプティブマルチタスクという言葉が存在する
というところを出発点にしてるから、万能だと思っちゃってるんだろうな
アプリ同士でならうまく行くんだろうけど、
プリエンプティブの仕組みを作ってるOSそのものとは競合する
OSもアプリも一つのコアの上で動くプログラムでしかない
548:デフォルトの名無しさん
23/01/09 12:38:36.89 fJBcDyWo0.net
最初のそんな負荷でもない一定周期監視の話から固まる→CPU負荷とかUIブロックの話とかになってるから
UIブロッキングを差し置いてsleepだけ話題にされるともにょるのはわからんでもない
549:デフォルトの名無しさん
23/01/09 12:47:08.01 P8ctm/0T0.net
>>541
優先度下げれば解決するって誰かが言ってた
550:デフォルトの名無しさん
23/01/09 12:51:26.43 r84aUeSC0.net
各プロセスが協調的に動いているなら、優先度は意味があるかも知れないですね
551:デフォルトの名無しさん
23/01/09 12:54:20.02 fJBcDyWo0.net
>>542
流れ見ると負荷の話に対する優先度だからUIスレッドが差し置かれているので結局もにょる
552:デフォルトの名無しさん
23/01/09 12:59:35.44 r84aUeSC0.net
処理するにあたり、CPU性能は十分にあるんですよね?
553:デフォルトの名無しさん
23/01/09 13:13:54.26 hV+nJOyS.net
>>535
なるほど
これならもし犬にマルチーズとかダックスフンドを追加したくなったとき
犬や猫鶏をinu.py,neko.py,tori.pyとかにそれぞれ分離しても管理しやすそう
ありがとう
554:デフォルトの名無しさん
23/01/09 13:30:24.28 bS50m3IM0.net
組み込み向けとかのOSだといまだにそういうアーキテクチャなんじゃないの?
確かタイマー割り込みしたりとかいろいろ面倒だった気がするし
現代的なOSでloopにsleep入れるとか無意味
555:デフォルトの名無しさん
23/01/09 13:43:58.36 hV+nJOyS.net
せっかくなのでGPT3に聞いてdictを継承して属性参照できるクラスを書いてみた
URLリンク(ideone.com)
聞いたのは、
「pythonでdictを継承したクラスの例を書いて」のみなんだが、
わざわざ聞くからには属性参照もしたいってことだろ?
と言わんばかりにその部分も補完したコード出してきてちょっとびびった・・
556:デフォルトの名無しさん
23/01/09 15:27:13.21 r84aUeSC0.net
Linuxを含めてUnix系OSならselect関数が使える
ソケット含めてI/Oを監視しプロセスに通知してくれる
Pythonでも、もちろん使える
557:デフォルトの名無しさん
23/01/09 17:16:47.85 9i8F7U9Np.net
AIって結局翻訳機みたいなもんで翻訳機に最適化した文章作らないとミスるから仕事で使えないよな
558:デフォルトの名無しさん
23/01/09 17:35:48.91 m0H/MGw3r.net
>>550
プログラミングよりそのスキル身につける方が早い時代は来るかも
559:デフォルトの名無しさん
23/01/09 18:01:59.77 +jLIXnEf0.net
URLリンク(noauto-nolife.com)
のcontent.html内{% url 'bbs:single' topic.id %}
って何を指してるかわかりますか?
views.pyかurls.pyのurlpatternsの記載のどこかが原因だとは思うんですけど。
560:デフォルトの名無しさん
23/01/09 18:03:12.22 +jLIXnEf0.net
>>552です
NoReverseMatchエラーになります。
singleなんてどこにも記載してないのでそれはそうなんでしょうが
561:デフォルトの名無しさん
23/01/09 18:29:36.59 .net
>>552
URLリンク(i.imgur.com)
562:デフォルトの名無しさん (ワッチョイ b954-Or7w)
23/01/09 18:38:19.71 WbC15m7a0.net
便利すぎて怖い
563:デフォルトの名無しさん (ワッチョイ 9933-X8vt)
23/01/09 19:33:02.64 bS50m3IM0.net
その意味を理解できないと無意味だよ?
564:デフォルトの名無しさん
23/01/09 20:38:05.70 YumOwVoa0.net
>>536
> 何度も言うがsleepを入れるのは時代とか関係なくそれはアーキテクチャと利用ケースによるものだ
だからなんのためにsleep入れてるんだよ
今でもWin3.1とか組込でノンプリエンティティブOS使ってるから時代に関係ないとでも言うのか?
> 組み込み分野では無限ループでトリガ待ちするのに無限ループで止めるのなんて20年以上前からやってる
話しそらそうと必死すぎw
565:デフォルトの名無しさん
23/01/09 20:39:49.86 YumOwVoa0.net
>>541
だからUIと重い処理はスレッド分けろって書いてあるだろ
プアな環境でCPUがアップアップならワーカースレッドの優先度下げろ
566:デフォルトの名無しさん
23/01/09 20:41:46.54 YumOwVoa0.net
>>540
カーネルスレッドの仕組みも知らないなら黙ってた方がいいぞ...
567:デフォルトの名無しさん
23/01/09 21:19:53.52 VzKaZmuqd.net
スレッドを分けろ、を起点にせずに優先度の話から入った理由が気になる
568:デフォルトの名無しさん
23/01/09 21:38:55.07 rm/gRoLA0.net
>>560
優先度の話はこれが最初か>>491
何もおかしくない気がするが
スレッド分けたところで優先度が高かったら、他のアプリがカクカクになるぞ
569:デフォルトの名無しさん
23/01/09 21:39:13.38 fJBcDyWo0.net
確かにUIスレッドとワーカーを分ければUIが固まることは無い
実際のところ同一優先度でもタイムスライスしてくれるのでUIはなんとか動くし、優先度下げればさらによく動く
ただ結局複数プロセスで動くOSである以上処理負荷をどこまでかけるかっていうのはそのプロセスのマナーになる
他プロセスがより低い優先度のワーカー動かしてるとそっちがあからさまに動かなくなるのでsleep入れるのは間違ってはいない
通常よりちょっと下げるだけであればUIは普通に動くが他プロセスの通信や動画がガクガクになったりする
570:デフォルトの名無しさん
23/01/09 21:52:50.87 YumOwVoa0.net
>>560
おれの最初のレスは >>480 に対するレスだから
571:デフォルトの名無しさん
23/01/09 21:59:14.36 YumOwVoa0.net
>>562
> 他プロセスがより低い優先度のワーカー動かしてるとそっちがあからさまに動かなくなるのでsleep入れるのは間違ってはいない
その低い優先度のワーカースレッドがないと単に無駄なsleepしてるだけのタコソフトになるわけだがw
普通により低い優先度にしなよ...
> 通常よりちょっと下げるだけであればUIは普通に動くが他プロセスの通信や動画がガクガクになったりする
なんで通信や動画再生の優先度を下げるんだよ...
572:デフォルトの名無しさん
23/01/09 21:59:59.63 Qq7b1M5F0.net
RTOSのように優先度が絶対的なら話は単純だけど
デスクトップOSは忖度があるからsleepいれるとか場当たり的な作法を
正解と勘違いするのもわからんでもないかな(ないけど)
573:デフォルトの名無しさん
23/01/09 22:02:02.62 fJBcDyWo0.net
>>564
優先度を決めてぶん回すって言うのは他の優先度低いやつを気にしないって宣言でもある
> なんで通信や動画再生の優先度を下げるんだよ...
おっとごめん。下げるっていうのは自プロセスのワーカの話ね。影響を受けるほうはchromeブラウザの動画再生とかって話。
574:デフォルトの名無しさん
23/01/09 22:21:26.63 YumOwVoa0.net
>>566
> 優先度を決めてぶん回すって言うのは他の優先度低いやつを気にしないって宣言でもある
下げてる優先度よりさらに低い優先度のタスクを気にする必要あるの?
そう言うのはCPUが空いてるなら動けばいいっていうタスクじゃないの?
あと大抵のデスクトップOSだと同一優先度ならラウンドロビンになるから全く動かなくなるとかないし
> おっとごめん。下げるっていうのは自プロセスのワーカの話ね。影響を受けるほうはchromeブラウザの動画再生とかって話。
ワーカー下げてるのに動画再生がカクカクするならCPU以外のリソースの影響でしょ
それってsleep入れても改善しなくね?
575:デフォルトの名無しさん (ワッチョイ 613c-wVfF)
23/01/09 22:44:46.53 UbXmK8tM0.net
元の話に戻すと、たかだかファイル更新をウォッチするのにCPUが100%に張り付くプログラムが正解だって言われて納得できる人は少ないだろう
OSの深いところまで知らなくても利用できるようにwatchdogなどのパッケージが使うのが正解なんだと思うよ
576:デフォルトの名無しさん
23/01/09 23:09:50.64 YumOwVoa0.net
元の話は
> 特定のフォルダを5分おきに監視して、新たに作成されたファイル名を
SQLiteテーブルに登録していく…的なことをやりたい
なのでsleepで5分待って処理するなり(まあ処理時間分ずれるから5分毎に処理したいならそれなりの処置が要るけど)ファイル監視APIなりwatchdogみたいなライブラリ使うなりすればいいだけの話でCPU100%なんて話は出てない
CPU 100%の話は
> 単純にメモリ内で巨大な配列の計算をしたいとかで、
> 人間が判るほど時間のかかる処理をする時に、
> ループの中に微小なsleepを入れておくと、そのタイミングでOSがタスク切り替えできるので、
> 他のアプリに影響せずに処理できる
とか昔のノウハウでドヤった老害がいただけの話
577:デフォルトの名無しさん
23/01/09 23:45:15.82 r84aUeSC0.net
新たに作られたファイルを記録するだけなら、数十分間隔でチェックしても間に合いそう
578:デフォルトの名無しさん
23/01/09 23:48:51.92 bS50m3IM0.net
話が逸れまくったなw
本当おじさんは関係ない話で荒らすのが好きだな
579:デフォルトの名無しさん
23/01/10 00:12:28.63 YUW/czN/0.net
Python の話でもないし
プログラム板の皆さんに裁定してもらえ
580:デフォルトの名無しさん
23/01/10 00:32:37.03 pwe9NrJo0.net
ここの話題にしたいなら、せめてPythonのコードに落とすところ迄やって欲しい
581:デフォルトの名無しさん
23/01/10 00:56:07.09 7fmBGHmvM.net
pythonでスレッドの優先度を指定できる?
582:デフォルトの名無しさん
23/01/10 00:57:08.39 7fmBGHmvM.net
threadingモジュールにはthere are no prioritiesって書かれてるんだが
583:デフォルトの名無しさん
23/01/10 01:18:40.47 BEmjqJ7z0.net
>>574
psutilでいける
Windowsでも出来た
584:デフォルトの名無しさん
23/01/10 01:30:42.71 tyEc5PEMa.net
DoEvent しないと何も動かない。
基本的に、プログレスバーで処理の進捗状況も表示できない。
処理にCPU を使われるから、描画できない
スクレイピングでも、10秒ぐらいsleep しないと、ajax のページの内容が取れない。
他のプロセスに、CPUを与えないと通信できない
585:デフォルトの名無しさん
23/01/10 02:52:37.03 BEmjqJ7z0.net
あぁ、プロセスじゃなくてスレッドか
公式のウェブサイトにはないと優先度はないと書かれているら自前で実装かね
586:デフォルトの名無しさん
23/01/10 04:26:53.04 bCHQzZKpM.net
>>485
> 30代Pythonクソチョン男は強姦魔の犯罪者!
> あなたの近くにいます!
> 父母と祖父母の戸籍謄本を提出させましょう!
ホントそれ
587:デフォルトの名無しさん
23/01/10 06:53:53.27 1UMzF0dp0.net
>>574
やったことはないけど例えばWindowsな�
588:輜ative_idでスレッドid取得してctypes経由でSetThreadPriority呼ぶとかかなぁ
589:デフォルトの名無しさん
23/01/10 07:22:16.21 +/q9pWWH0.net
pythonでJRAスクレーピングしてるが、激アクセス(数万ページ連続とか)すると怒られるかな
590:デフォルトの名無しさん
23/01/10 08:45:04.89 govR9vZh0.net
URLリンク(www.jra.go.jp)
User-agent: *
Disallow:
591:デフォルトの名無しさん
23/01/10 09:59:25.25 BF2exWNa0.net
有償でデータ売ってるからそれ買えよ
592:デフォルトの名無しさん
23/01/10 10:08:23.70 wQS7zJvf0.net
たぶん刻々と変わるオッズとかを取得してるんじゃないか?
593:デフォルトの名無しさん
23/01/10 10:35:47.62 KidLhlDB0.net
今住んでるとこ岡崎なんだよなー
だからスクレイピングすると予告なしに逮捕される
594:デフォルトの名無しさん
23/01/10 10:46:19.04 BF2exWNa0.net
静的なページなら一旦ファイルにダウンロードしてから
そのファイルをスクレイピングすれば問題なし
595:デフォルトの名無しさん
23/01/10 13:37:01.45 vQglWnVB0.net
これまで自作プログラムの設定情報は、iniファイルに出力していたのですが、
これからはレジストリで管理したいと思っています。
iniファイルだと増えすぎてしまうので、、、
新たなキーをどこかに作り管理たいのですが、レジストリのどこに作れば良いとかルールがあれば教えて下さい。
596:デフォルトの名無しさん
23/01/10 14:10:11.28 DW4759/80.net
>>587
このスレじゃ無理
こっちのスレ↓で質問してみよう。親切な達人プログラマーが懇切丁寧に教えてくれるよ
Ruby 初心者スレッド Part 67
スレリンク(tech板)
597:デフォルトの名無しさん
23/01/10 16:14:20.05 wABcpDEfd.net
watchdogを使いたいだけなのに、環境構築が出来ない。
598:デフォルトの名無しさん
23/01/10 20:19:07.57 BEmjqJ7z0.net
winregモジュールの使い方ならまだしもレジストリの使い方は流石にここではないぞ
599:デフォルトの名無しさん
23/01/10 21:08:28.15 mG8UnKKfM.net
レジストリよりiniのほうが遥かにいいんじゃね?と思うのは俺だけだろうか
600:デフォルトの名無しさん
23/01/10 22:01:11.76 KidLhlDB0.net
iniに対するレジストリのメリットは、複数ユーザで使っても混ざらない点だな
601:デフォルトの名無しさん
23/01/10 22:03:17.69 pwe9NrJo0.net
それはiniをどこに置くかで決められます
602:デフォルトの名無しさん
23/01/10 22:05:07.71 AhhHg4Rw0.net
その辺の話題はスレチだな
603:デフォルトの名無しさん
23/01/10 22:13:42.57 iHwuxQHZ0.net
boost経由で呼べば良いじゃん
604:デフォルトの名無しさん
23/01/11 10:15:37.51 WNWSBuGvd.net
URLリンク(101010.fun)
ここの、pipを使ってWatchdogライブラリをインストールします。
これがわからない。
605:デフォルトの名無しさん
23/01/11 10:21:09.30 sSLpCElv0.net
(゚Д゚)ェェエエ工工工
606:デフォルトの名無しさん (スップ Sdb3-1Rsz)
23/01/11 12:09:27.84 gbRv1Z7ld.net
shellがわかってないやつかな?
linux環境ならCtrl-Alt-Tで出てくる黒い画面でpip3 install <モジュール名> とすればいい
VisualStudio環境は知らん
607:デフォルトの名無しさん
23/01/11 12:36:58.75 pHEYs8Fp0.net
>linux環境ならCtrl-Alt-Tで出てくる黒い画面で
こういう説明なんでできちゃうんだろうか
608:デフォルトの名無しさん
23/01/11 13:03:08.65 iHuPH8qf0.net
バカだから
今は pip install hoge じゃなくて python -m pip hoge のほうがいいんじゃなかったっけ
609:デフォルトの名無しさん
23/01/11 13:04:05.15 gC4z+P/fa.net
釣られるなよ
いつものやつだ
610:デフォルトの名無しさん
23/01/11 14:53:19.92 PaKS96+/0.net
>>600
pip install hoge と
python -m pip hoge は同じじゃないのか。
611:デフォルトの名無しさん
23/01/11 15:35:31.95 /f97NRPi0.net
pipってなんかよく判らん
windowsやandroidでも、そんな簡単に付けたり外したりできないのは経験済みなので、
依存関係とか複雑なのだろう
612:デフォルトの名無しさん
23/01/11 15:51:02.84 iHuPH8qf0.net
やっぱり python -m pip hoge のほうが推奨みたいだね
参考URL貼ろうとしたらエラーになったから "pip install" vs "python -m pip" でぐぐってくれ
613:デフォルトの名無しさん
23/01/11 17:48:54.93 PaKS96+/0.net
>>604
ググった。これ?
daeudaeu.com/python-pip-difference
うちがまさにこうで、
/usr/bin/pythonは2.xで
/usr/bin/pipは3.xだ。
が、ライブラリの導入先は予め承知していないと、そりゃ色んな意味で拙いだろ...
614:デフォルトの名無しさん (テテンテンテン MM4b-p8yh)
23/01/11 18:31:10.79 hDaja8juM.net
うっといわ
615:デフォルトの名無しさん (ワッチョイ 2b63-WzqH)
23/01/11 19:00:49.39 A5R9Myj10.net
pip3をつかえば混乱は起きないと思われる
616:デフォルトの名無しさん
23/01/11 19:07:57.81 QeEETBRE0.net
環境変数までフルマネージドになるっていうのがコツな
617:デフォルトの名無しさん
23/01/11 19:14:51.41 koilfHaW0.net
venvがおすすめです
618:デフォルトの名無しさん
23/01/11 20:24:47.06 iHuPH8qf0.net
>>605
まとめの部分だけ読んだけど大体あってそう
Python 関連の調べものする時は日本語サイトは除外したほうがいい気はする (変なサイト多くない?)
venv を使う時も ./.venv/bin/python -m pip hoge で直接インストールすることができるっぽい
619:デフォルトの名無しさん
23/01/11 20:32:03.41 koilfHaW0.net
Pythonは入ってるけどpipが入ってない環境で、自分でビルドして入れるとそうなるのかな
620:デフォルトの名無しさん
23/01/11 20:38:00.37 koilfHaW0.net
venv有効にしたらvenv内のpythonとpip使われるから、普通にpip installすればいい
621:デフォルトの名無しさん
23/01/11 21:22:19.92 FiONWEgu0.net
>>610
英語も似たようなもんやで
622:デフォルトの名無しさん
23/01/12 00:24:14.84 AWG/ChaM0.net
pipコマンドを今実行しているpythonコマンドとは別に入れた場合(pipはディストロのパッケージで入れたけどpythonはpyenv経由みたいな)は、
pythonコマンドとpipコマンドの整合性がとれていない場合があるからpython -m pipの方が安心
Dockerとか使ってるならそういう心配はしないでRUN pipで大丈夫
623:デフォルトの名無しさん
23/01/12 01:05:00.06 lC/nTIdv0.net
pythonもあれなんで py に
py -m pip hoge にしてる
624:デフォルトの名無しさん
23/01/12 01:45:21.55 eOyGEuW0a.net
Ruby on Rails では、rbenv が多いが、
日本人が作った、多言語バージョンマネージャーのanyenv が良い。
asdf もある
対応言語を表示
anyenv install --list
Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv
Rubyはrbenv, node はNVM, Python はvenv などと、
各言語で、バージョンマネージャーが異なるのは面倒
最近は、Docker も多い。
就職では、Docker, AWS も必須