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
  • 相关阅读:
    细心也是一种态度
    EDM数据访问的三种方式
    如何快速提交网站备案 ICP备案
    c# winform 关于给静态全局变量赋值的问题
    c#DIY随机数类winform 2010
    手把手教你如何用IIS搭建手机WAP网站(图文)
    admin密码对应的MD5值,16位和32位,admin解密自己留着方便.
    C#实现MD5加密,winform c#2005
    最全的c#日期函数 winform
    如何解决因网站备案号没下来而网站被迫关闭的办法
  • 原文地址:https://www.cnblogs.com/bill2014/p/6919798.html
Copyright © 2011-2022 走看看