首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python进程间通信

Python进程间通信
EN

Stack Overflow用户
提问于 2022-02-20 10:54:39
回答 1查看 242关注 0票数 0

我正在尝试实现一个python脚本,它可以发送由两个不同线程生成的串行数据。现在我能够设置运行的线程,我希望在管理进程和子线程之间创建一个共享内存。管理器的代码如下

代码语言:javascript
复制
import DetectorService
import HearingService


if __name__=='__main__':
    global shm01
    t1 = Thread(target = DetectorService.start)
    t2 = Thread(target = HearingService.start)
    t1.setDaemon(True)
    t2.setDaemon(True)
    t1.start()
    t2.start()
    while True:
        # Get data from thread01
        # Get data from thread02
        # Send data via serial port
        pass

然后有一个线程的最小表示:

代码语言:javascript
复制
import time

def start():
    while True:
        a = a + 1
        time.sleep(0.5)

例如,我的目标是访问a变量并通过串口发送值。串行通信不是问题,我知道怎么做。

因此,我的问题是,如何实现共享内存?

EN

回答 1

Stack Overflow用户

发布于 2022-02-20 11:01:13

实现这一点有多种方法。序列化对共享资源的访问(这将使访问安全)的一种简单方法是使用Lock。您可以阅读更多的here

例如,您的线程可能收集需要在共享列表中发送的数据,如下所示:

代码语言:javascript
复制
data_to_send = []

当您需要读取或写入该列表时,只需在全局Lock对象的上下文中这样做。如下所示:

代码语言:javascript
复制
with lock:
    data_to_send.append(some_data)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71193678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档