相关疑难解决方法(0)

了解多处理:Python中的共享内存管理,锁和队列

多处理是python中一个强大的工具,我想更深入地理解它.我想知道何时使用常规 队列以及何时使用多处理管理器在所有进程之间共享这些.

我提出了以下测试场景,其中包含四种不同的多处理条件:

  1. 使用池和NO管理器

  2. 使用池和管理器

  3. 使用单个流程和NO Manager

  4. 使用单个进程和Manager

工作

所有条件都执行作业功能the_job.the_job由一些由锁固定的印刷组成.此外,函数的输入只是放入队列(以查看它是否可以从队列中恢复).该输入是一个简单的索引idxrange(10)在称为主脚本创建start_scenario(在底部示出).

def the_job(args):
    """The job for multiprocessing.

    Prints some stuff secured by a lock and 
    finally puts the input into a queue.

    """
    idx = args[0]
    lock = args[1]
    queue=args[2]

    lock.acquire()
    print 'I'
    print 'was '
    print 'here '
    print '!!!!'
    print '1111'
    print 'einhundertelfzigelf\n'
    who= ' By run %d \n' …
Run Code Online (Sandbox Code Playgroud)

python locking multiprocessing python-multiprocessing

38
推荐指数
1
解决办法
1万
查看次数