2017-12-17 5 views
0

私は2つの開発環境を持っている。スクリプトはWindowsコンピュータ上で正常に実行され、すべてのプールが順番に実行されます。しかし、Macでは、それはちょうどハングアップします。私は手動で設定するときに作業が、しかし、プロセスは1Macでは完了したが、Windowsでは完了していないとマルチプロセッシングがハングアップする

に数えない。このハング...

def insert_user_request(self, data): 
    pool_size = multiprocessing.cpu_count() * 2 
    pool = multiprocessing.Pool(processes=pool_size) 
    pool.map(self.insert_user, data) 

これは動作します...

def insert_user_request(self, data): 
    pool_size = 1 
    pool = multiprocessing.Pool(processes=pool_size) 
    pool.map(self.insert_user, data) 

機能プールは、挿入を呼び出しますデータをデータベースに入れて、確かに、データはうまくいきます。それは問題と思われるプールの「シャットダウン」です。

+0

同じバージョンのPythonとすべてのライブラリが関係していますか? – Doon

+1

Macプログラムでスレッドを使用したことがある場合は、問題になる可能性があります。 Python 3を使用している場合は、['spawn' startメソッド](https://docs.python.org/3/library/multiprocessing.html#contexts-and-start-methods)を試してみてくださいMac too –

+0

スポーンスタートメソッドが機能しました。ありがとう、Antti! – TravisVOX

答えて

0

元の質問のコメントでAntti Haapalaに寄付したが、スポーン開始メソッドが機能しました。

def insert_user_request(self, data): 
    multiprocessing.set_start_method('spawn') 
    pool_size = multiprocessing.cpu_count() * 2 
    pool = multiprocessing.Pool(processes=pool_size) 
    pool.map(self.insert_user, data) 
関連する問題