2017-06-06 6 views
0

私は2つのリストを1つのリストに含み、第2のリストにはサービスリストが含まれています。2つのリストからマルチプロセッシングのターゲット関数を渡して個々のプロセスを個々のプロセスで処理する方法

server_list = [u'server1', u'server2', u'sever3', u'server4'] 
servive_name = [[u'postfix', u'diamond', u'lldpd', u'ssh', u'nagios-nrpe-server'], [u'postfix', u'lldpd', u'ssh', u'nagios-nrpe-server'], [u'postfix', u'lldpd', u'ssh', u'nagios-nrpe-server'], [u'postfix', u'lldpd', u'ssh', u'nagios-nrpe-server']] 

私は私がしたいことは、各プロセスである

ssh_to_restart(server_name,services,output): 
{ 
// do ssh on the server and restart the service from service list 
} 

は、サーバー名と、それぞれのリストからサービスのリストを受け取り、この機能を持っている(EX- SERVER1がSERVICE_LISTに第一のリストにマッピングするためにあり、 ssh_to_restart()関数を実行します。 また、それで作成されるプロセスの数は、server_listの長さと等しくなければなりません。 どのように私はこのコード

output = multiprocessing.Queue() 
processes = [multiprocessing.Process(target=ssh_to_server, args=(server_list,service_list,output))] 

EDITのようなものでこれを達成することができます - 私はやったこれらのコードで

from multiprocessing.dummy import Pool as ThreadPool 
pool = ThreadPool(4) 
    pool.map(ssh_to_restart,zip(server_list,service_list)) 
    pool.close() 
    pool.join() 

を試みたが、

TypeError: ssh_to_restart() takes exactly 2 arguments (1 given) 

答えて

0

このエラーを得た

問題を解決する

from multiprocessing.dummy import Pool as ThreadPool 
pool = ThreadPool(4) 
pool.map(ssh_to_restart,zip(server_list,service_list)) 
pool.close() 
pool.join() 

TypeError: ssh_to_restart() takes exactly 2 arguments (1 given) 

がinsert_and_processの定義で

ssh_to_restart((server_name,services,output)): 
{ 
// do ssh on the server and restart the service from service list 
} 

余分括弧の周りに二重括弧を追加することによって解決されたエラー - Pythonは2項目であるべきである単一のパラメータとしてそれを扱いますシーケンス。シーケンスの最初の要素は最初の変数に属し、もう1つは2番目の要素に帰属します。

関連する問題