python3多进程和进程池

#一个程序运行起来之后,代码+用到的资源称之为进程,它是操作系统分配资源的基本单位,不仅可以通过线程完成多任务,进程也是可以的#进程之间是相互独立的#cpu密集的时候适合用多进程
#多进程并发
import multiprocessing
from multiprocessing import Pool
import time
def test1():
    for i in range(10):
        time.sleep(1)
        print(‘test‘, i)

def test2():
    for i in range(10):
        time.sleep(1)
        print(‘test‘, i)

if __name__ == ‘__main__‘:
    p1 = multiprocessing.Process(target=test1)
    p2 = multiprocessing.Process(target=test2)
    p1.start()
    p2.start()
#进程之间不共享
import multiprocessing
from multiprocessing import Pool
import time
import threading
g_num = 0
def edit():
    global g_num
    for i in range(10):
        g_num += 1

def reader():
    print(g_num)

if __name__ == ‘__main__‘:
    # t1 = threading.Thread(target=edit)
    # t2 = threading.Thread(target=reader)
    # t1.start()
    # t2.start()
    p1 = multiprocessing.Process(target=edit)
    p2 = multiprocessing.Process(target=reader())
    p1.start()
    p1.join()
    p2.start()
#进程池实现并发
import multiprocessing
from multiprocessing import Pool
import time
import threading
g_num = 0
def test1():
    for i in range(10):
        time.sleep(1)
        print(‘test1‘, i)

def test2():
    for i in range(10):
        time.sleep(1)
        print(‘test2‘, i)

if __name__ == ‘__main__‘:
    # t1 = threading.Thread(target=edit)
    # t2 = threading.Thread(target=reader)
    # t1.start()
    # t2.start()
    # p1 = multiprocessing.Process(target=edit)
    # p2 = multiprocessing.Process(target=reader())
    # p1.start()
    # p1.join()
    # p2.start()
    pool = Pool()
    pool.apply_async(test1)
    pool.apply_async(test2)
    pool.close()
    pool.join()

原文地址:https://www.cnblogs.com/fengzi7314/p/10017580.html

时间: 2024-11-09 01:08:42

python3多进程和进程池的相关文章

Python 多进程和进程池

一,前言 进程:是程序,资源集合,进程控制块组成,是最小的资源单位 特点:就对Python而言,可以实现真正的并行效果 缺点:进程切换很容易消耗cpu资源,进程之间的通信相对线程来说比较麻烦 线程:是进程中最小的执行单位. 特点无法利用多核,无法实现真正意义上是并行效果. 优点:对于IO密集型的操作可以很好利用IO阻塞的时间 二,多进程 2.1 multiprocessing模块介绍 在上一节多线程中讲到,由于GIL的原因,多线程无法利用多核优势,如果想要充分地使用多核CPU的资源,在pytho

多进程和进程池

from multiprocessing import Process import os # 子进程要执行的代码 def run_proc(name): print 'Run child process %s (%s)...' % (name, os.getpid()) if __name__=='__main__': print 'Parent process %s.' % os.getpid() p = Process(target=run_proc, args=('test',)) pr

python多进程操作-进程池

在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.当被操作对象数目不大时,可以直接利用multiprocessing中的Process动态成生多个进程,10几个还好,但如果是上百个,上千个目标,手动的去限制进程数量却又太过繁琐,这时候进程池Pool发挥作用的时候就到了. Pool可以提供指定数量的进程,供用户调用,当有新的请求提交到pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求:但如果池中的进程数已经达到规定

38. Python 多进程Manager 进程池

强大的Manager模块 上一节实现的数据共享的方式只有两种结构Value和Array. Python中提供了强大的Manager模块,专门用来做数据共享. 他支持的类型非常多,包括:Value.Araay.list.dict.Queue.Lock等. 以下例子: import multiprocessing def worker(d,l):     l += range(11, 16)     for i in xrange(1, 6):         key = "key{0}"

multiprocessing模块的多进程与进程池

multiprocessing模块的Process方法 可以利用Proces方法在一个主进程中创建几个子进程 from multiprocessing import Process import time def f1(name): time.sleep(2) print('Hell %s' % name) def f2(age): time.sleep(2) print('Hell %s' % age) if __name__ == "__main__": p = Process(t

多进程,进程池。

1.多进程的调用 1.1 multiprocessing调用 1 from multiprocessing import Process 2 import time 3 def f(name): 4 time.sleep(1) 5 print('hello', name,time.ctime()) 6 7 if __name__ == '__main__': 8 p_list=[] 9 for i in range(3): 10 p = Process(target=f, args=('alvi

第36篇 多进程的数据共享,进程池的回调函数,线程 什么是GIL锁,Threading模块记

内容概览: 进程 数据共享 进程池--回调函数 线程 线程的基础理论 什么是线程? 线程与进程的关系 GIL锁 线程的开启: Threading模块1,用多进程开启socket创建聊天 server端写了input函数会报错?因为服务器是高速运行的,自动化的为来访问的客户端提供服务, 不可能停下来等待管理员的输入,然后发送给客户.这就失去了自动化的意义. 2,进程池Pool()方法创建的进程,map()方法是否有返回值? p.map()得到的是迭代对象 import time from mult

第35篇 进程之间的通信 Queue Pipe 进程池Pool,p.apply()方法,p.apply_async()方法

内容大纲: 进程之间的通讯 进程队列 管道 进程之间的数据共享 进程池 使用进程池 开启进程 提交任务 获得返回值 回调函数1.进程队列 先进先出 from multiprocessing import Queue import queue q = Queue() q.put(1) q.put(2) q.put(3) print(q.get()) print(q.get()) print(q.get()) 1 2 3 from multiprocessing import Queue impor

python并发编程(管道,事件,信号量,进程池)

管道 Conn1,conn2 = Pipe() Conn1.recv() Conn1.send() 数据接收一次就没有了 from multiprocessing import Process,Pipe def f1(conn): from_zhujincheng = conn.recv() print('子进程') print('来自主进程的消息:',from_zhujincheng) if __name__ == '__main__': conn1,conn2 = Pipe() #创建一个管