私はスレッドライブラリを使用していて、複数のスレッドを呼び出すスレッドを1つ持っています。このプログラムの背景には、ImageをキャプチャしてTCP-SocketServer上のクラスで利用できるようにするカメラがあります。Pythonでのスレッド内でのスレッドの作成
このように、カメラのキャプチャを実行するスレッドとTCPServerを実行する2番目のスレッドが必要ですが、このスレッド内には受信接続ごとにいくつかのスレッドがあります。
この最後のスレッドは、スレッドを単独で作成できるスレッドが必要であることを意味します。残念ながら、これはうまくいかなかった。
私は問題を表し小さなスニペットに巨大なコードを打破するために管理:funciton adder
で作成した複数のスレッドがあるはずスレッドとして呼び出される関数creator
で
import threading
def adder(x,res,i):
res[i] = res[i] + x*i;
def creator(a,threads,results):
results = []
for i in range(0,a):
results.append(0)
threads.append(threading.Thread(target=adder,args=(a,results,i)))
threads[i].start()
for i in range(0,len(threads)):
threads[i].join()
return results;
threads = [];
results = [];
mainThread = threading.Thread(target=creator,args=([5,threads,results]))
mainThread.start()
mainThread.join()
for i in range(0,len(results)):
print results[i]
print threads[i]
を。
結果は空ですが、どうしてそうですか?
これは私の大きなプログラムで発生するのと同じ問題です。
Pythonのスレッドが持っていないような方法( '.terminate()'):だから、ここで、だけでなく、マイナーなローカルの変更でコードより「Python的」を作るためにすることを修復するためにばらつきがあります開始されました。参照:http://stackoverflow.com/questions/323972/is-there-any-way-to-kill-a-thread-in-python –
Pythonスレッドには '.stop()'メソッドがありません。コード_これで例外が発生するはずです。既に与えられたリンクを参照してください。Pythonはスレッドを強制的に停止させる組み込みの方法をサポートしていません。 –
それは不思議そうに働いた。しかし、私は今、単純なタスクを持って、すべてのスレッドが参加するのを待つスレッドに置き換えましたが、結果はまだ空です。そして、NoneTypeにjoinという関数がないという通知を受け取ります。 – Kev1n91