1.使用Pool来创建进程

from multiprocessing import Pool
def f(n):
return n*n
if __name__=="__main__":
p=Pool(5)
a=range(10)
print(p.map(f,a))

p.map会将a列表中的数据依次循环给f函数。但是当函数需要两个参数时,该方法不适用。

2.使用Process来创建进程

def info(title):
print title
print 'module name:', __name__
if hasattr(os, 'getppid'): # only available on Unix
print 'parent process:', os.getppid()
print 'process id:', os.getpid() def f(name):
info('function f')
print 'hello', name if __name__ == '__main__':
info('main line')
p = Process(target=f, args=('bob',))
p.start()
p.join() #串行

3.使用Pool.apply_async(异步)

from multiprocessing import Pool
import time def f(n):
print n*n
time.sleep(1)
return n*n if __name__ == '__main__':
p = Pool(processes=5)
res_list = []
for i in range(10):
res = p.apply_async(f,[i,])
res_list.append(res) for item in res_list:
print item.get()

共享内存的三种方法

1.使用multiprocessing中的Queue(将Queue封装了)

from multiprocessing import Process, Queue
import Queue as Q2
def f(q,n):
q.put([n, 'hello'])
print q.get()
if __name__ == '__main__':
q = Q2.Queue()
for i in range(5):
p = Process(target=f, args=(q,i))
p.start()
# print q.get() # prints "[42, None, 'hello']" from multiprocessing import Process, Lock
import time
def f(i):
# l.acquire()
time.sleep(1)
print 'hello world', i
# l.release() if __name__ == '__main__':
# lock = Lock()
for num in range(10):
Process(target=f, args=[num]).start()

2.使用values和array(灵活性较差,不推荐使用)

from multiprocessing import Process, Value, Array

def f(n, a):
n.value = 3.1415927
for i in range(len(a)):
a[i] = -a[i] if __name__ == '__main__':
num = Value('d', 0.0)
arr = Array('i', range(10)) p = Process(target=f, args=(num, arr))
p.start()
p.join() print num.value
print arr[:]

3.使用Manager

from multiprocessing import Process, Manager

def f(d, l):
d[1] = ''
d[''] = 2
d[0.25] = None
l.reverse() if __name__ == '__main__':
manager = Manager() d = manager.dict()
l = manager.list(range(10)) p = Process(target=f, args=(d, l))
p.start()
p.join() print d
print l

python 进程创建和共享内容的方法的更多相关文章

  1. Python中创建ndarrary的20中方法

    本文完整示例:完整示例代码 本文介绍了基础的.常用的创建ndarrary的多种方法,附带示例代码. 一.通过ndarray创建 import numpy as np 1.1 一维数组 a = np.a ...

  2. python 识别二维码内容的方法

    识别二维码链接的方式有多种,那么如何用python 的方法实现识别呢? 请看如下代码: from pyzbar.pyzbar import decode from PIL import Image i ...

  3. python之创建文件写入内容

    https://www.cnblogs.com/evablogs/p/7096686.html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 ...

  4. python中从键盘输入内容的方法raw_input()和input()的区别

    raw_input()输出结果都是字符串 Input()输入什么内容,输出就是什么内容

  5. [ python ] 进程的操作

    目录 (见右侧目录栏导航)- 1. 前言- 2. multiprocess模块- 2.1 multiprocess.Process模块    - 2.2 使用Process模块创建进程    - 2. ...

  6. Python 动态创建函数【转】

    知乎上也有相似的问题 偶然碰到一个问题,初想是通过动态创建Python函数的方式来解决,于是调研了动态创建Python函数的方法. 定义lambda函数 在Python中定义lambda函数的写法很简 ...

  7. 【网络编程基础】Linux下进程通信方式(共享内存,管道,消息队列,Socket)

    在网络课程中,有讲到Socket编程,对于tcp讲解的环节,为了加深理解,自己写了Linux下进程Socket通信,在学习的过程中,又接触到了其它的几种方式.记录一下. 管道通信(匿名,有名) 管道通 ...

  8. Python 进程之间共享数据

    最近遇到多进程共享数据的问题,到网上查了有几篇博客写的蛮好的,记录下来方便以后查看. 一.Python multiprocessing 跨进程对象共享  在mp库当中,跨进程对象共享有三种方式,第一种 ...

  9. python全栈开发 * 进程理论 进程创建 * 180724

    一.进程理论 1.进程是资源分配的最小单位. 2.进程调度就是多个进程在操作系统的控制下被CPU执行,去享用计算机的资源. 先来先服务 短作业优先 时间片轮转 多级反馈队列 3.进程调度的过程是不能够 ...

随机推荐

  1. es6 - 函数 扩展

    1. 可添加默认参数 function fn(name,age=17){ console.log(name+","+age); } fn("Amy",18); ...

  2. Android 虹软免费人脸识别 SDK开发

    目前我们的应用内使用了 ArcFace 的人脸检测功能,其他的我们并不了解,所以这里就和大家分享一下我们的集成过程和一些使用心得集成ArcFace FD 的集成过程非常简单在 ArcFace FD 的 ...

  3. linux安装vmware

    在官网下载linux版 https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html sudo chm ...

  4. feed

    a1=tf.placeholder(tf.float32)    # 占位符 a2=tf.placeholder(tf.float32)r=tf.multiply(a1,a2) with tf.Ses ...

  5. git分支错误提交导致代码丢失--窗口提示HEAD detached错误

    今天开发时git 检出分支到本地时操作错误,导致在一个临时分支上开发,且把代码提交了,结果代码未提交到任何分支,提交时还报了个错: HEAD detached at 4d927fa4 后来把代码重新检 ...

  6. Servlet JDBC Example

    Develop a web application that should have following features. User can register and then login to t ...

  7. fMRI在认知心理学上的研究

    参考:Principles of fMRI 1 问题: 1. fMRI能做什么不能做什么? 第一周:fMRI简介,data acquisition and reconstruction 大致分为两类: ...

  8. hihocoder-1407 后缀数组二·重复旋律2 不重合 最少重复K次

    后缀数组不能直接通过Height得出不重合的公共串.我们可以二分k值,这样连续的Height只要都大于等于k,那他们互相间的k值都大于等于k.每个这样的连续区间查找SA的最大最小值,做差判断是否重合( ...

  9. MySQL事务(二)

    一.事务的隔离级别/锁问题 基本的介绍: 当我们的mysql表,被多个线程或者客户端同时操作时,mysql提供一种机制,可以让不同的事务在操作数据时,具有隔离性. 锁是计算机协调多个进程或线程并发访问 ...

  10. Remove Duplicates From Sorted Array leetcode java

    算法描述: Given a sorted array, remove the duplicates in place such that each element appear only once a ...