我想引起你的注意,因为我是新的多处理编码。
下面是我必须使用多处理模块在不同内核上运行的两个进程的问题
第一项任务是逐行从传感器收集数据,并将其附加到内存(数据结构:python列表),它是一个串行连接(一个接一个地给出数据),为此我已经有了一个工作代码,但由于我必须为此收集数据,直到传感器被连接到无限时间,直到代码运行为止。
第二个过程是从上述数据结构中收集前140个数据,并在第二个进程函数中打印其他任务,br> pseduo代码如下所示
Buffer=[] #global list
def process1():
Obj=port.open()
a=read_data(Obj)
Buffer.append(a)
port.close()
retunrn Buffer
def process2(Buffer):
print('hello from process2')
if len(Buffer)>=140:
print(Buffer)
#do some task
else:
print(Buffer)
def interprocesscommunication()
import multiprocessing
while(True):
p1=multiprocessing.Process(target=process1)
p2=multiprocessing.Process(target=process2,args=(Buffer))
p1.run()
p2.run()任何人都有更好的方案来在不同的核心上并行地运行这两个进程。
注意:我也很怀疑这两个进程能否共享内存,如果不是如何?
发布于 2022-10-06 09:34:36
进程不能以这种方式共享内存。你必须以某种方式同步状态。最常见的方法是使用multiprocessing.Pipe()
另外,请看一下这个示例:
# example of using a duplex pipe between processes
from time import sleep
from random import random
from multiprocessing import Process
from multiprocessing import Pipe
# generate and send a value
def generate_send(connection, value):
# generate value
new_value = random()
# block
sleep(new_value)
# update value
value = value + new_value
# report
print(f'>sending {value}', flush=True)
# send value
connection.send(value)
# ping pong between processes
def pingpong(connection, send_first):
print('Process Running', flush=True)
# check if this process should seed the process
if send_first:
generate_send(connection, 0)
# run until limit reached
while True:
# read a value
value = connection.recv()
# report
print(f'>received {value}', flush=True)
# send the value back
generate_send(connection, value)
# check for stop
if value > 10:
break
print('Process Done', flush=True)
# entry point
if __name__ == '__main__':
# create the pipe
conn1, conn2 = Pipe(duplex=True)
# create players
player1 = Process(target=pingpong, args=(conn1,True))
player2 = Process(target=pingpong, args=(conn2,False))
# start players
player1.start()
player2.start()
# wait for players to finish
player1.join()
player2.join()https://stackoverflow.com/questions/73971489
复制相似问题