[英]Problem in running multiple processes using multiprocessing in python
我的程序中有3个函数audio(),motion()和振动(),每个函数的定义方式都使它们从各自的传感器收集数据。 我编写了一个python程序,该程序从音频和振动传感器收集数据,并编写了一个C程序从运动传感器获取数据(它比python快得多)。
最初,我使用多处理库中的“ Processes”来同时运行audio()和振动(),这绝对好用。 但是现在当我尝试同时运行motion()和它们时,问题就存在了。 问题是motion()进程直到audio()完成才开始,反之亦然,并且由于它应该实时运行,因此我需要给键盘中断以完成audio()或motion()处理。
根据我的理解,任何一个过程(运动和音频)都互相等待完成,然后开始执行。 但是我的目标是将它们一起运行,以便我可以在同一时间轴上获取数据。
def vibration():
#collects vibration data from raspberry shake
....
....
def audio():
#uses pyaudio to record audio data
....
....
def motion():
command = 'rtl_sdr -f 433000000 -g 15 -s 1024000 - | ./rf_receiver'
subprocess.run(command)
p1 = Process(target=_thread.start_new_thread(fetch_data, ("hello",)))
p1.start()
p2 = Process(target=audio())
p2.start()
p3 = Process(target=motion())
p3.start()
p1.join()
p2.join()
p3.join()
您的问题是,您正在从主流程中调用辅助函数,并且仅将其返回值作为target
参数传递给Process
。 您可能想要类似p2 = Process(target=audio)
(在audio
之后没有()
)和p3 = Process(target=motion)
。 您可能还希望为p1
类似的功能,但我不知道您当前的代码正在使用那里的线程做什么,因此我无法轻松修复它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.