广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 多进程 多线程数据共享
  • 566
分享到

Python 多进程 多线程数据共享

多线程进程数据 2023-01-31 02:01:39 566人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

#!/usr/bin/env python # -*- coding:utf-8 -*- # author: Changhua Gong from multiprocessing import Process, Queue import o

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: Changhua Gong
from multiprocessing import Process, Queue
import os, time, random
'''
1. 我们平时from queue import Queue是线程对列,用于数据共享的,只能在线程之间进行使用;
2. from multiprocessing import Queue,是进程对列,用于进程间数据交换,实际中是在进程之间进行序列化和反序列化(pickle)
   完成数据交互的;
3. 线程之间修改同一份数据,需加,而进程间的数据传递,仅是传递(数据共享)。
'''
# 写数据进程执行的代码:
def write(q):
    print('Process to write: %s' % os.getpid())
    for value in ['A', 'B', 'C']:
        print('Put %s to queue...' % value)
        q.put(value)  # 推送
        time.sleep(random.random())
# 读数据进程执行的代码:
def read(q):
    print('Process to read: %s' % os.getpid())
    while True:
        value = q.get(True)  # 获取
        print('Get %s from queue.' % value)
if __name__=='__main__':
    # 父进程创建Queue,并传给各个子进程:
    q = Queue()
    pw = Process(target=write, args=(q,))
    pr = Process(target=read, args=(q,))
    # 启动子进程pw,写入:
    pw.start()
    # 启动子进程pr,读取:
    pr.start()
    # 等待pw结束:
    pw.join()
    # pr进程里是死循环,无法等待其结束,只能强行终止:
    pr.terminate()
    
    
#!/usr/bin/env Python
# -*- coding:utf-8 -*-
# author: Changhua Gong
from multiprocessing import Process, Pipe
from time import sleep
from multiprocessing import freeze_support
'''
def Pipe(duplex=True):
    return Connection(), Connection()
说明个问题:Pipe仅能两个进程间的交互,类似电话线形式收发
'''
def run_A(conn):
    for i in range(3):
        conn.send("I am from run_A: %s" % i)
        sleep(0.3)
    for i in range(5):
        print(conn.recv())
def run_B(conn):
    for i in range(3):
        print(conn.recv())
    for i in range(5):
        conn.send("I am from run_B: %s" %  i)
        sleep(0.3)
if __name__ == "__main__":
    freeze_support()
    conn1, conn2 = Pipe()
    pA = Process(target=run_A, args=(conn1,))
    pB = Process(target=run_B, args=(conn2,))
    pA.start()
    pB.start()
    pA.join()
    pB.join()

--结束END--

本文标题: Python 多进程 多线程数据共享

本文链接: https://www.lsjlt.com/news/186492.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python 多进程 多线程数据共享
    #!/usr/bin/env python # -*- coding:utf-8 -*- # author: Changhua Gong from multiprocessing import Process, Queue import o...
    99+
    2023-01-31
    多线程 进程 数据
  • python多线程数据共享怎么实现
    在Python中,可以使用`threading`模块来实现多线程数据共享。具体步骤如下: 导入`threading`模块:`im...
    99+
    2023-10-26
    python
  • Java 多线程之间共享数据
    目录1、线程范围的共享变量2、使用Map实现线程范围内数据的共享3、ThreadLocal实现线程范围内数据的共享4、优化5、实例1、线程范围的共享变量 多个业务模块针对同一个sta...
    99+
    2022-11-12
  • 40. Python 多线程共享变量
    1.线程共享变量多线程和多进程不同之处在于,多线程本身就是可以和父线程共享内存的,这也是为什么其中一个线程挂掉以后,为什么其他线程也会死掉的道理。import threading def worker(l):     l.append("...
    99+
    2023-01-31
    变量 多线程 Python
  • python多进程共享变量
    本文实例为大家分享了python多进程共享变量的相关代码,供大家参考,具体内容如下 from multiprocessing import Process, Manager import os impo...
    99+
    2022-06-04
    变量 进程 python
  • python多线程数据共享的方法是什么
    Python中多线程数据共享的方法有以下几种:1. 全局变量:在多个线程中使用全局变量进行数据共享。但是需要注意的是,全局变量在多线...
    99+
    2023-08-12
    python
  • C++多线程编程之如何解决多线程数据共享问题
    这篇文章主要讲解了“C++多线程编程之如何解决多线程数据共享问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++多线程编程之如何解决多线程数据共享问题”吧!通过容器创建多个线程#incl...
    99+
    2023-06-15
  • Java多线程之间如何共享数据
    这篇文章主要介绍Java多线程之间如何共享数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、线程范围的共享变量多个业务模块针对同一个static变量的操作 要保证在不同线程中 各模块操作的是自身对应的变量对象pu...
    99+
    2023-06-25
  • Python多进程共享numpy 数组的方法
    为什么要用numpy     Python中提供了list容器,可以当作数组使用。但列表中的元素可以是任何对象,因此列表中保存的是对象的指针,这样一来,...
    99+
    2022-11-12
  • Python实现多进程共享数据的方法分析
    本文实例讲述了Python实现多进程共享数据的方法。分享给大家供大家参考,具体如下: 示例一: # -*- coding:utf-8 -*- from multiprocessing import Pr...
    99+
    2022-06-04
    进程 方法 数据
  • python多线程共享变量怎么实现
    在Python中,可以使用`threading`模块来实现多线程共享变量。 下面是一个简单的例子,展示了如何使用多线程共享变量: i...
    99+
    2023-10-27
    python
  • Android开发中多进程共享数据简析
     背景 最近在工作中遇到一个需求,需要在接收到推送的时候将推送获得的数据存起来,以供app启动时使用。我们会认为这不是So easy吗?只要把数据存到SharedPr...
    99+
    2022-06-06
    进程 数据 android开发 多进程 Android
  • Java如何实现多个线程之间共享数据
    目录实现多个线程之间共享数据一、 如果每个线程执行的代码相同二、 如果每个线程执行的代码不同多线程之间共享数据的方式探讨方式一:代码一致方式二:代码不一致实现多个线程之间共享数据 一...
    99+
    2022-11-12
  • python socket多线程和多进程
    在socket中,如果直接创建的话,是只能接受一个用户的请求需要实现socketserver中的handle方法,可以实现多进程并发访问 SocketServer内部使用 IO多路复用 以及 “多线程” 和 “多进程” ,从而实现并发处理...
    99+
    2023-01-31
    多线程 进程 python
  • python之多线程与多进程
    1. 多进程与多线程 (1)背景:为何需要多进程或者多线程:在同一时间里,同一个计算机系统中如果允许两个或者两个以上的进程处于运行状态,这便是多任务。多任务会带来的好处例如用户边听歌、边上网、边打印,而这些任务之间丝毫不会互相干扰。使用多...
    99+
    2023-01-31
    之多 线程 进程
  • python多线程和多进程(二)
    ---恢复内容开始--- 一、多进程   1、multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似。 import time from mult...
    99+
    2023-01-30
    多线程 进程 python
  • golang多线程共享变量怎么实现
    在Go语言中,可以使用`sync`包中的`Mutex`或`RWMutex`来实现多线程之间共享变量的访问控制。 `Mutex`是一种...
    99+
    2023-10-25
    golang
  • python多进程和多线程介绍
    目录一、什么是进程和线程 二、多进程和多线程 三、python中的多进程和多线程1、多进程2、多线程一、什么是进程和线程  进程是分配资源的最小单位,线...
    99+
    2022-11-10
  • Python 多线程及进程
    threading使用 (工业风案例) import threading from time import sleep, ctime loop = [4, 2] class ThreadFunc: def __init_...
    99+
    2023-01-30
    多线程 进程 Python
  • Java中怎么利用多线程锁实现数据同步共享
    Java中怎么利用多线程锁实现数据同步共享,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。大多数应用程序要求线程互相通信来同步它们的动作。在Java程序中最简单实现同步的方法就是...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作