2016-08-01 52 views
-1

我想通過調用不同線程上的單獨實例來使用python3.5來並行化Code​​ML。我已經完成了一切工作。如果我提供Pool.imap(或Pool.map)與可迭代的變量,該變量包含的變量超出程序可用的內核數量,則它只會在每個內核中運行一個變量,然後退出。有什麼我在這裏做錯了嗎?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被調用之前在一個線程上運行。

相關問題