3

マルチプロセッシングとパトスを使用していくつかのPythonコードを書いています。マルチプロセッシングの使用に慣れるために小さなテスト プログラムを作成しました。ローカル マシンでは問題なく動作しますが、別のクラスターでは実行できません。

次のエラーが表示されます。

Traceback (most recent call last):
  File "./multi.py", line 116, in <module>
    pool = pathos_multiprocessing.Pool(processes=pool_size,maxtasksperchild=1,)
  File "/usr/local/lib/python3.4/dist-packages/multiprocess/pool.py", line 150, in __init__
    self._setup_queues()
  File "/usr/local/lib/python3.4/dist-packages/multiprocess/pool.py", line 243, in _setup_queues
    self._inqueue = self._ctx.SimpleQueue()
  File "/usr/local/lib/python3.4/dist-packages/multiprocess/context.py", line 110, in SimpleQueue
    from .queues import SimpleQueue
  File "/usr/local/lib/python3.4/dist-packages/multiprocess/queues.py", line 22, in <module>
    import _multiprocess as _multiprocessing
ImportError: No module named '_multiprocess'

しかし、私がするとき

pip3 list

pathos と multiprocessing モジュールの両方が明らかに存在します。

multiprocess (0.70.4)
nbconvert (4.2.0)
nbformat (4.0.1)
nose (1.3.1)
notebook (4.2.0)
numpy (1.10.4)
oauthlib (0.6.1)
pathos (0.2.0)

なぜこれが起こっているのか、どんな明るいアイデアでも大歓迎です!

小さなテストコードは次のとおりです。

#! /usr/bin/env python3

import pathos.multiprocessing as mp
import os
import random

class Pool_set:
    def pool_fun(directory_name):
        cwd=os.getcwd()
        os.mkdir(str(directory_name))
        directory=os.path.join(cwd,str(directory_name))
        os.chdir(directory)
        os.system('{}'.format('sleep '+str(directory_name)))
        cwd2=os.getcwd()
        print(cwd2)
        test_file = open('test_file.out','w')
        test_file.write(cwd2)
        print("Finished in "+directory)
        os.chdir(cwd)

if __name__ == '__main__':


    config=[]
    pool_set = Pool_set
    for i in (random.sample(range(1,100),3)):
        config.append(i)

    pool_size = mp.cpu_count()
    pool = mp.Pool(processes=pool_size,maxtasksperchild=1,)

    pool_outputs = pool.map(pool_set.pool_fun,config)
    pool.close()
    pool.join()
4

1 に答える 1