2

Planetlab ノード内のPlanetlabノードでスクリプトを実行したい。多くのユーザーが同じコンピューターを共有し、各ユーザーにスライスが割り当てられている。ルートはあるが、このスクリプトのルート権限は制限されていると思う

#!/usr/bin/env python

import multiprocessing
import time

def func(msg):
    print msg
    time.sleep(20)
    print 'finish '+str(msg)

if __name__ == "__main__":
    pool = multiprocessing.Pool(processes=100)
    for i in xrange(20):
        msg = "hello %d" %(i)
        pool.apply_async(func, (msg, ))
        time.sleep(5)
    pool.close()
    pool.join()
    print "Sub-process(es) done."

次のエラーが発生しました

Traceback (most recent call last):
  File "try.py", line 12, in <module>
    pool = multiprocessing.Pool(processes=100)
  File "/usr/lib/python2.6/multiprocessing/__init__.py", line 227, in Pool 
    return Pool(processes, initializer, initargs) 
  File "/usr/lib/python2.6/multiprocessing/pool.py", line 84, in __init__
    self._setup_queues()
  File "/usr/lib/python2.6/multiprocessing/pool.py", line 131, in _setup_queues
    self._inqueue = SimpleQueue()
  File "/usr/lib/python2.6/multiprocessing/queues.py", line 315, in __init__
    self._rlock = Lock()
  File "/usr/lib/python2.6/multiprocessing/synchronize.py", line 117, in __init__
    SemLock.__init__(self, SEMAPHORE, 1, 1)
  File "/usr/lib/python2.6/multiprocessing/synchronize.py", line 49, in __init__
    sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue)
OSError: [Errno 38] Function not implemented

グーグルから、誰かが解決策を提案しました:

Add to /etc/fstab mounting of /dev/shm command
1   tmpfs /dev/shm    tmpfs   defaults,noexec,nosuid     0     0

Mount all unmounted filesystems from /etc/fstab.
1   $ mount -a

しかし、エラーが発生しました:マウント:許可が拒否されました

私も試しました:

mount /dev/shm

それでも同じエラーが発生しますが、planetlab ノード スライスでこの種の問題を解決することは可能ですか? ありがとう!

4

0 に答える 0