[解決済み] pythonw.exe has stopped working "というランダムなクラッシュが発生する。
質問
SOです。
問題のコードは以下の通りですが、他のスクリプトでもランダムに発生することがあります(エラーの原因はコードにはないと思います)。
なぜか、完全にランダムに、時々クラッシュして "pythonw.exe has stopped working" というポップアップが出るのですが、それは5時間後だったり、24時間後だったり、5日後だったり...。なぜクラッシュするのかがわかりません。
from datetime import date, timedelta
from sched import scheduler
from time import time, sleep, strftime
import random
import traceback
s = scheduler(time, sleep)
random.seed()
def periodically(runtime, intsmall, intlarge, function):
currenttime = strftime('%H:%M:%S')
with open('eod.txt') as o:
eod = o.read().strip()
if eod == "1":
EOD_T = True
else:
EOD_T = False
while currenttime >= '23:40:00' and currenttime <= '23:59:59' or currenttime >= '00:00:00' and currenttime <= '11:30:00' or EOD_T:
if currenttime >= '23:50:00' and currenttime <= '23:59:59':
EOD_T = False
currenttime = strftime('%H:%M:%S')
print currenttime, "Idling..."
sleep(10)
open("tca.txt", 'w').close
open("tca.txt", 'w').close
runtime += random.randrange(intsmall, intlarge)
s.enter(runtime, 1, function, ())
s.run()
def execute_subscripts():
st = time()
print "Running..."
try:
with open('main.csv'):
CSVFile = True
except IOError:
CSVFile = False
with open('eod.txt') as eod:
eod = eod.read().strip()
if eod == "1":
EOD_T = True
else:
EOD_T = False
if CSVFile and not EOD_T:
errors = open('ERROR(S).txt', 'a')
try:
execfile("SUBSCRIPTS/test.py", {})
except Exception:
errors.write(traceback.format_exc() + '\n')
errors.write("\n\n")
errors.close()
print """ %.3f seconds""" % (time() - st)
while True:
periodically(15, -10, +50, execute_subscripts)
どなたか、クラッシュの原因を知る方法、または原因を知っていて直す方法をご存知の方はいらっしゃいませんか?
ありがとうございます
- ハイフレックス
解決方法は?
よくわからないが、それは かもしれない する2行と関係がある。
open("tca.txt", 'w').close
これらは、あなたが意図していることを行っていません:ファイルを開いたままにしているのです。 ファイルを開いたままにしてしまいます。 コール を取得するだけでなく、close メソッドを使用します。
open("tca.txt", 'w').close()
^^
しかし、それはおそらくないでしょう。 CPythonはファイルオブジェクトがゴミになると自動的に閉じます(この場合はすぐにそうなります - 文が終わるとすぐにrefcountは0になります)。
Linuxシステムに移行した方がいいかもしれませんね ;-)
アイデア: これを
python.exe
の代わりに、DOSボックスから (
cmd.exe
)を開いたまま無視していませんか? デバッグの大問題
pythonw.exe
デスには、ポップアップするエラーメッセージを表示するコンソールウィンドウがありません。
この行は何をしているのだろう?
print "Running..."
で実行している場合は
pythonw.exe
を見ることはないですよね? そして、その
可
によって、問題が発生します。
まさに
どのバージョンのPythonとWindowsを実行しているか。
Standard input
と
standard output
は実際には存在しません。
pythonw
という謎めいたものを探し当てたのを覚えています。
pythonw.exe
に書き込まれたデータが多すぎて、マイクロソフトのライブラリが吹っ飛ぶという死がありました。
sys.stdout
(どの
print
を使用します)。
見分ける方法のひとつは、これを
python.exe
DOSボックスからでなく、DOSボックスからで、1年間クラッシュせずに実行された場合、おそらくそれが原因でした ;-)
使用例
以下、簡単なプログラムです。
i = 0
while 1:
i += 1
with open("count.txt", "w") as f:
print >> f, i
print "hi!"
32 ビットの Windows Vista で Python 2.7.6 を使用すると
根本的に
があるかないかで動作が異なります。
python.exe
または
pythonw.exe
が実行されます。
下
python.exe
:
C:\Python27>python yyy.py
hi!
hi!
hi!
hi!
hi!
hi!
hi!
hi!
hi!
hi!
hi!
...
それが永遠に続き、その中の値
count.txt
が増え続ける。 しかし
C:\Python27>pythonw yyy.py
C:\Python27>
つまり、目に見える出力がないのです。 そしてそれは期待されていることです。
pythonw
はそのプログラムを実行します
切断
をコンソールウィンドウから表示します。
ごく短い時間の後
pythonw.exe
タスクマネージャーで確認できます) - 跡形もなく消えてしまいます。 その時点で
C:\Python27>type count.txt
1025
つまり、MSのライブラリは、切断されたプログラムから標準出力に "too much" が書き込まれると、まだクラップアウトしてしまうのです。 そこで
print "hi!"
そして、それは永遠に続くのです。
Python 3
これはPython 3では、バインディングという怪しげな手段によって、"fixed"されています。
sys.stdout
を
None
その下に
pythonw.exe
. を読むことができます。
この騒動の歴史はこちら
.
関連
-
ピロウズ画像色処理の具体的な活用方法
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み] pythonw.exeとpython.exeのどちらを選択しますか?
-
[解決済み] Pythonでオブジェクトが属性を持つかどうかを知る方法
-
[解決済み] 0から9までのランダムな整数を生成する
-
[解決済み] 作業ディレクトリを変更するシェル 'cd' コマンドに相当するものですか?
-
[解決済み】大文字と数字を含むランダムな文字列の生成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonはWordの読み書きの変更操作を実装している
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み] データ型が理解できない
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?