2017-12-04 18 views
1

Pythonのマルチプロセッシングモジュールを使用して、別のオブジェクトを作成し、そのオブジェクトをloops_foreverメソッドとして呼び出す新しいプロセスを開始します。私は私のメインクラスでPythonマルチプロセッシング呼び出しオブジェクトメソッド

import OtherService 
from multiprocessing import Process 
my_other_service = OtherService(address=ADDRESS) 
my_other_process = Process(target=my_other_service.loops_forever()) 
print("got here") 
my_other_process.start() 
print("done") 

私はこのコードを実行し、「ここに来た」と印刷されることは決してありません。 loops_foreverは "got here"プリントのすぐ上で呼び出され、コントロールはメインクラスに返されません。

私はここで間違っていますか? 私はこの方法で前にマルチプロセッシングを使用しています

my_other_process = Process(target=OtherService, kwargs={"address":ADDRESS}) 
my_other_process.start() 

正しくOtherServiceのinit関数を呼び出し、別のプロセスとしてinit関数を実行します。 唯一の違いは、init関数を呼び出してから、別のプロセスとしてloops_foreverメソッドを永遠に実行したいということです。

答えて

1

target=my_other_service.loops_forever()を実行すると、loops_foreverと呼ばれます。関数として呼び出すのではなく、関数として渡すには、target=my_other_service.loops_foreverのようにかっこを削除します。

+0

どのような愚かな間違い。ありがとう@pycoder – crusarovid

関連する問題