2017-09-15 20 views
0

私は2つのスレッド、つまりthread1thread2が必要です。 thread1は 'C++'を入力とし、['c'、 '+'、 '+']を出力し、リストに入れます。つまり、resです。 とthread2は入力として 'python'をとり、['p'、 'y'、 't'、 'h'、 'o'、 'n']を出力するには、resに入れます。処理後、resは[[''、 '+'、 '+']、['p'、 'y'、 't'、 'h'、 'o'、 'n']] [['p'、 'y'、 't'、 'h'、 'o'、 'n']、['c'、 '+'、 '+']]ロジックは次のコードのようですが、スレッドバージョンコードが必要です。データを順次処理するPythonスレッド

train_set = [ 
    'c++', 
    'python', 
] 

def to_list(item): 
    return list(item) 

res = list(map(to_list, train_set)) 
print(res) # [['c', '+', '+'], ['p', 'y', 't', 'h', 'o', 'n']] 

答えて

0
import thread 

def func(Inp, res): 
    res.append(list(Inp)) 
    return res 

train_set = ['c++', 'python'] 
result=[] 

try: 
    thread.start_new_thread(func,(train_set[0],result)) 
    thread.start_new_thread(func,(train_set[1],result)) 
except: 
    print "Error: unable to start thread" 

for i in range(20): 
    print(result) 
    pass 

が、この作業は簡単にこの方法を行うことができます。

>>> train_set = [ 
...  'c++', 
...  'python', 
... ] 
>>> res=[list(i) for i in train_set] 
>>> res 
[['c', '+', '+'], ['p', 'y', 't', 'h', 'o', 'n']] 
+0

これはpython3.6では動作しませんでしたか? –

+0

Pythonバージョンの問題、スレッドの実行時間、私は私の投稿を編集した、それは20時間を実行し、両方のスレッドを実行するのに十分な時間を与えます。 – Dadep

+0

@Dadep確実に 'print'文はPython 3では動作しませんので、あなたはそのバージョンではテストしていません。 –

1

あなたは、スレッド間でメッセージを渡すために設計された、おそらくを使用してオフに最適です。特に、キューのget()メソッドを呼び出すと、そのキューは現在空ですが、メッセージが利用可能になるまで待機します。 2つのワーカースレッドごとにキューが必要になります。また、元のスレッドで3つ目の結果が得られます。私はあなたのコードを書くつもりはないと思います!しかし、私がリンクしているページの例は、そのクラスの使い方を示しています。

関連する問題