私は60個のオブジェクトからなるグループを持っています。それぞれのオブジェクトは自分自身でthreading.Thread
を持っています。 Pythonのロックなどでサブプロセスを生成するには、multiprocessing.Process
を使用してサブプロセスを生成し、に6 Threads
を使用しました。 obj []インデックスがProcess
の数を表し、obj [] []の各要素がThreads
というオブジェクトの1つであるように、オブジェクトを2次元のlist
に分割しました。だからここ内訳です:Pythonのサブプロセス内にスレッドを生成する
# break the objects out into my 2D list
obj= []
for i in all_obj:
if len(obj) == 0 or len(obj[len(obj)-1]) > 5:
obj.append([])
obj[len(obj)-1].append(i)
# spawn processes
processes = []
for i in obj:
processes.append(Process(target=proc_run,args=(i))
processes[len(processes)-1].start()
# process target
def proc_run(my_objs):
threads = []
for ad in my_objs:
threads.append(Thread(target=thread_run,args=(ad))
threads[len(threads)-1].start()
# thread target
def thread_run(my_obj):
for i in range(1,21):
## do some stuff with the object here
pass
logging.info("Thread for object <%s> finished."%(my_obj.prop))
問題は、私はstart()
呼び出しの後join()
を追加しない限り、スレッドが実際に産卵されていないということです。これはマルチスレッドへの私の欲求を排除するので(私はちょうどfor
ループを使用して同じことを達成することができます)、私は何をすべきか完全にはわかりません。
このスレッディングの場合、私は全然ノーと言えるので、答えが曖昧になればなるほど、関係するすべての人にとって簡単になります。ありがとう。
回答を「受け入れる」(その横のチェックマークをクリックする)ことができます。それは、それがあなたの質問に対する(最良の)答えと信じていることを示すでしょう。 –
ええ、私は行くつもりでしたが、私は2日間はできないと言います。それはむしろ迷惑ですが、私は知っていますが、何をするつもりですか? – Andy