0

SMSを送信するVB.NETでアプリケーションをコーディングしています。

このコードおよび/またはガイドラインのPYTHON->VB.NET翻訳を投稿していただけますか?

前もって感謝します!!!

import threading
class MessageThread(threading.Thread):
    def __init__(self,msg,no):
        threading.Thread.__init__(self)
        self.msg = msg  # text message
        self.no  = no   # mobile number
    def run(self):
        # function that sends "msg" to "no"
        send_msg(msg,no) 

# records of users are retrived from database 
# and (msg,no) tuples are generated
records = [(msg1,no1),(msg2, no2),...(msgN,noN)] 

thread_list = []

for each in records:
    t = MessageThread(each)
    thread_list.append(t)

for each in thread_list:
    each.start()

for each in thread_list:
    each.join()
4

2 に答える 2

1

このコードは、すべての msg/no タプルに対してスレッドを作成し、sendmsg を呼び出します。最初の "for each ... each.start()" はスレッドを開始し (sendmsg のみを呼び出します)、2 番目の "for each ... each.join()" は各スレッドが完了するのを待ちます。レコードの数によっては、かなりの数のスレッドが作成される可能性があり (1000 の SMS レコードを送信した場合)、これは非同期ではありますが、必ずしも効率的ではありません。

コードは比較的単純で pythonic ですが、.NET の場合はおそらくThreadPoolまたはBackgroundWorkerを使用して sendmsg 呼び出しを実行する必要があります。タプル (msg,no) と同等の .NET クラスを作成する必要があり、おそらくクラス自体に sendmsg() 関数を配置する必要があります。次に、メッセージをロードする .NET コードを作成します (これは Python コードには示されていません)。通常、一般的な List<> を使用して、SMS レコードも保持します。次に、ThreadPool はすべてのアイテムをキューに入れ、sendmsg を呼び出します。

元の Python と同等のコードを保持しようとしている場合は、IronPythonを確認する必要があります。

(sendmsg のアンダースコアが原因でテキストがイタリック体になったので、応答でアンダースコアを削除しました。)

于 2009-05-15T19:00:01.053 に答える
0

これは IronPython コード ("Python for .NET") であるため、ソース コードは VB と同じように .NET フレームワークを使用し、すべてのクラス ( System.Threading.Threadも含む) を示されているのと同じ方法で使用できます。

いくつかのヒント:

MessageThreadから派生しThread、クラス変数として宣言する必要がありますmsg。コンストラクターです。メンバー関数の -パラメーターは VB にトランスコードされません (そのままにしておきます)。forを使用して、 のタプルの小さな構造を定義します。no__init__selfList<Thread>thread_listrecords

于 2009-05-15T18:31:12.480 に答える