Python /スレッドに慣れるための学習演習として、壁紙をダウンロードするスクリプトを作成しました。URLを要求しようとする例外がない限り、すべてがうまく機能します。これは私が例外をヒットした関数です(それが重要な場合、同じクラスのメソッドではありません)。
def open_url(url):
"""Opens URL and returns html"""
try:
response = urllib2.urlopen(url)
link = response.geturl()
html = response.read()
response.close()
return(html)
except urllib2.URLError, e:
if hasattr(e, 'reason'):
logging.debug('failed to reach a server.')
logging.debug('Reason: %s', e.reason)
logging.debug(url)
return None
elif hasattr(e, 'code'):
logging.debug('The server couldn\'t fulfill the request.')
logging.debug('Code: %s', e.reason)
logging.debug(url)
return None
else:
logging.debug('Shit fucked up2')
return None
スクリプトの最後に:
main_thread = threading.currentThread()
for thread in threading.enumerate():
if thread is main_thread: continue
while thread.isAlive():
thread.join(2)
break
私の現在の理解(間違っているかもしれません)から、スレッドが完了していない場合、これに到達してから2秒以内にタスクがタイムアウトするはずです。代わりに、それは最後の間に固執します。これを削除すると、スクリプトの実行が完了するとハングします。
また、デバッグツールを備えた実際のIDEにNotepad ++を残しておくときが来たと判断したので、Wingをダウンロードしました。私はWingの大ファンですが、スクリプトはそこにぶら下がっていません... Pythonを書くために皆さんは何を使っていますか?