zoukankan      html  css  js  c++  java
  • 进程

     1 #!/usr/bin/env python
     2 #coding:utf-8
     3 
     4 from multiprocessing import Pool
     5 
     6 def f(x):
     7     return x*x
     8 
     9 if __name__ == '__main__':
    10     p = Pool(5)
    11     print(p.map(f, [1, 2, 3]))
    12 
    13 
    14 #直接起了三个进程,多进程
     子进程与父进程的关系
    1
    #!/usr/bin/env python 2 #coding:utf-8 3 4 from multiprocessing import Process 5 import os 6 7 def info(title): 8 print title 9 print 'module name:', __name__ 10 if hasattr(os, 'getppid'): # only available on Unix 11 print 'parent process:', os.getppid() 12 print 'process id:', os.getpid() 13 14 def f(name): 15 info('function f') 16 print 'hello', name 17 18 if __name__ == '__main__': 19 info('main line')#此时是父进程 20 p = Process(target=f, args=('bob',))#这边是调用的子进程 21 p.start() 22 p.join()
    进程锁
    1
    #!/usr/bin/env python 2 #coding:utf-8 3 4 from multiprocessing import Process, Lock 5 6 def f(l, i): 7 l.acquire() 8 print 'hello world', i 9 l.release() 10 11 if __name__ == '__main__': 12 lock = Lock() 13 14 for num in range(10): 15 Process(target=f, args=(lock, num)).start()

    进程之间的通信

     1 #!/usr/bin/env python
     2 #coding:utf-8
     3 
     4 '''
     5 from multiprocessing import Process, Queue#这个Queue跟直接import Queue不一样
     6 
     7 def f(q):
     8     q.put([42, None, 'hello'])
     9 
    10 if __name__ == '__main__':
    11     q = Queue()
    12     p = Process(target=f, args=(q,))
    13     p.start()
    14     print q.get()    # prints "[42, None, 'hello']"
    15     p.join()
    16 
    17 
    18 #共享数据
    19 
    20 '''
    21 
    22 from multiprocessing import Process,Queue
    23 
    24 
    25 def f(q,n):
    26     q.put([n,'hello'])
    27 
    28 
    29 if __name__ == '__main__':
    30     q = Queue()
    31     for i in range(5):
    32         p = Process(target=f,args=(q,i))
    33         p.start()
    34 
    35     while True:
    36         print q.get()
    37 
    38 
    39 #将数据都保存一个一个队列中(Queue)

    进程之间内存共享value,array

     1 #!/usr/bin/env python
     2 #coding:utf-8
     3 
     4 from multiprocessing import Process, Value, Array
     5 
     6 def f(n, a):
     7     n.value = 3.1415927
     8     for i in range(len(a)):
     9         a[i] = -a[i]
    10 
    11 if __name__ == '__main__':
    12     num = Value('d', 0.0)
    13     arr = Array('i', range(10))
    14 
    15     p = Process(target=f, args=(num, arr))
    16     p.start()
    17     p.join()
    18 
    19     print num.value
    20     print arr[:]
    21 
    22 
    23 #数据和列表级别的数据共享

    使用较多的内存共享

     1 #!/usr/bin/env python
     2 #coding:utf-8
     3 
     4 from multiprocessing import Process, Manager
     5 
     6 def f(d, l):
     7     d[1] = '1'
     8     d['2'] = 2
     9     d[0.25] = None
    10     l.reverse()
    11 
    12 if __name__ == '__main__':
    13     manager = Manager()
    14 
    15     d = manager.dict()
    16     l = manager.list(range(10))
    17 
    18     p = Process(target=f, args=(d, l))
    19     p.start()
    20     p.join()
    21 
    22     print d
    23     print l
    24 
    25 
    26 #进程之间的内存共享不是真正的内存共享,是通过一个中间通道来进行共享,线程才是真正的共享,support types list, dict, Namespace, Lock, RLock, Semaphore, BoundedSemaphore, Condition, Event, Queue, Value and Array
  • 相关阅读:
    light oj 1105 规律
    light oj 1071 dp(吃金币升级版)
    light oj 1084 线性dp
    light oj 1079 01背包
    light oj 1068 数位dp
    light oj 1219 树上贪心
    light oj 1057 状压dp TSP
    light oj 1037 状压dp
    矩阵快速幂3 k*n铺方格
    矩阵快速幂2 3*n铺方格
  • 原文地址:https://www.cnblogs.com/bill2014/p/6919798.html
Copyright © 2011-2022 走看看