2

そこで、暇なときにクラッカーのようなマルチスレッド プログラムを作成しました。それが行うことは、 File1 から行を読み取り、 File2 を反復処理し、 File2 からデータの各行を取得し、 File1 と File2 から取得したデータを Web ページに送信し、特定の応答を取得することです。以下は私がしたことの例です。

import urllib2
import thread
import threading

lock = threading.Lock()

def check(data1, data2):
     specificdata = "specific"
     dataone = data1.replace("\n", "")
     datatwo = data2.replace("\n", "")
     link = "http://webpage.com/?data1=" + dataone + "&data2=" + datatwo
     response = urllib.urlopen(link).read()
     lock.acquire()
     if specificdata in response:
         print "Success!"
     else:
         print "Failed!"
     lock.release()

data1list = raw_input("Data One List Path: ")
data2list = raw_input("Data Two List Path: ")
print ""
data1file = open(data1list, 'r')
for data1 in data1file:
    if data1 == "\n":
        break
    else:
        data2file = open(data2list, 'r')
        for data2 in data2file:
            if data2 == "\n":
                break
            else:
                    thread.start_new_thread(check,(data1, data2))
        data2file.close()

コードはIDLEで実行すると機能しますが、パスを入力した後、ファイルをダブルクリックすると機能しません。エラーメッセージがスパムになるだけです(「FAILED BEFORE CHECK()」または「FAILED IN CHECK()」ではありません)。何が起こっているのか見る前に閉じてしまいます。問題は何ですか?

----------------------編集----------------------

私はなんとかエラーを取得し、それは言う

sys.excepthook によって開始されたスレッドの未処理の例外に失われた sys.stderr がありません

これを解決する方法はありますか?

----------------------解決方法----------------------

thread.start_new_thread() を使用した Python 2.6 での単純なスレッド化

4

0 に答える 0