Python学习多进程介绍

多进程的基本使用

import multiprocessingimport osimport time  def run():    print("父进程:%s,子进程:%s" % (os.getppid(), os.getpid()))    time.sleep(2) if __name__ == "__main__":        p = multiprocessing.Process(target=run)        p.start()        p.join()

登录后复制

进程间通信

不同进程间内存是不共享的,要实现两个进程间的数据交换,可以用以下方法

Queue

import multiprocessing  def f(q):    q.put(11111) if __name__ == "__main__":    q = multiprocessing.Queue()    p = multiprocessing.Process(target=f, args=(q,))    p.start()    print(q.get())

登录后复制

Pipe

立即学习“Python免费学习笔记(深入)”;

import multiprocessing  def f(conn):    conn.send(1)    conn.send(2)    print(conn.recv())    conn.close() if __name__ == "__main__":    parent_conn, child_conn = multiprocessing.Pipe()    p = multiprocessing.Process(target=f, args=(child_conn,))    p.start()    print(parent_conn.recv())    print(parent_conn.recv())    parent_conn.send(3)    p.join()

登录后复制

进程间的数据共享

Manager

import multiprocessingimport os  def func(d, l):    d[os.getpid()] = os.getpid()    print(d)    l.append(os.getpid())    print(l) if __name__ == "__main__":    manager = multiprocessing.Manager()    d = manager.dict()    l = manager.list()    p_list = []    for i in range(5):        p = multiprocessing.Process(target=func, args=(d, l))        p.start()        p_list.append(p)    for p in p_list:        p.join()

登录后复制

    

进程锁

当多个进程要访问共享资源时,Lock可以避免访问冲突

import multiprocessing  def f(l, i):    l.acquire()    print("hello world", i)    l.release() if __name__ == "__main__":    lock = multiprocessing.Lock()    for num in range(10):        p = multiprocessing.Process(target=f, args=(lock, num))        p.start()

登录后复制

进程池

进程池内部维护一个进程队列,当使用时,则去进程池中获取一个进程,如果进程池中没有可使用的进程,那么程序就会等待,直到进程池中有进程

import multiprocessingimport osimport time  def foo(i):    time.sleep(2)    print("in process", os.getpid())    return i + 100  def bar(arg):    print("==>exec done:", arg) if __name__ == "__main__":    pool = multiprocessing.Pool(5)    for i in range(10):        pool.apply_async(func=foo, args=(i,), callback=bar)    print("end")    pool.close()    pool.join()

登录后复制

   

以上就是 Python学习多进程介绍的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2275677.html

(0)
上一篇 2025年2月27日 14:41:46
下一篇 2025年2月27日 14:42:03

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 简单谈谈python中的多进程

    multiprocessing模块是python库中最高级和功能最强大的模块之一。本文就来给大家简单讲讲multiprocessing一般性技巧 进程是由系统自己管理的。 1:最基本的写法 from multiprocessing impo…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论