我需要使用Python记录和保存视频及其相应的音频。我可以单独执行此操作(先保存音频,然后保存视频),但不会同时发生。
当然,我考虑过使用多处理,但这仍然行不通
p1 = Process(target=listen_to_speaker())
p1.start()
# needs to run at the same time as
p2 = Process(target=record_save())
p2.start()
在这里
listen_to_speaker()
记录音频并将其保存在.wav
文件中(还使用speech_recognition
模块存储该音频的文本转换)。
record_save()
使用OpenCV记录网络摄像头中的视频并将其存储在.avi
文件中
当前,将录制并保存音频,然后打开网络摄像头以录制视频。
我还尝试添加:
p1.join()
p2.join()
事情发生的方式没有改变。
我的预期结果是2个文件,一个视频和一个音频,它们彼此对应。
答案 0 :(得分:0)
target=
需要不带()
且不带参数的函数名称。称为“回调”。
p1 = Process(target=listen_to_speaker)
p2 = Process(target=record_save)
如果必须运行带有参数的函数,则可以将它们作为元组分配给args
p1 = Process(target=listen_to_speaker, args=(arg1,arg2) )
p2 = Process(target=record_save, args=(arg1,arg2) )
如果函数只需要一个参数,那么您仍然必须使用元组args=(arg1,)
您当前的代码与此代码相似
result1 = listen_to_speaker()
result2 = record_save()
p1 = Process(target=result1)
p1.start()
p2 = Process(target=result2)
p2.start()
因此您可以在主线程中运行函数,并使用函数结果启动进程。
如果它们什么也不返回,那么您有target=None
,因此进程甚至无法启动