2016-08-01 2 views
-1

python3.5を使用して、別のスレッドで別々のインスタンスを呼び出してCodeMLを並列化しようとしています。私は一点まで作業するためにすべてを得ました。プログラムが利用可能なコアよりも多くの変数を含む反復可能性を持つPool.imap(またはPool.map)を提供する場合、各コアを通じて1つの変数しか実行せずに終了します。私がここで間違っていることは何ですか?リスト内のすべての項目に対してpython imapが関数を呼び出さない

# Call CodeML for all files in a directory. 
genes = glob(path + "06_phylipFiles/" + "*.phylip") 
l = int(len(genes)) 
pool = Pool(processes = cpu) 
func = partial(runCodeml, ap, usertree, path, completed, ctl, forward) 
print("\n\tRunning CodeML with", str(cpu), "threads....\n") 
rcml = pool.imap(func, genes, chunksize = int(l/cpu))  
pool.close() 
pool.join() 

基本的には、終了する前にリスト全体を実行するにはPool.imapが必要です。助けをありがとうございました。

答えて

0

問題は私が呼んでいた別のプログラムであるとわかりました。これを別のステップで実行するように設定したので、Pool.imapが呼び出される前にスレッドが1つ実行されます。

関連する問題