A.J*_*A.J 4 python parallel-processing scripting
我试过使用
#!/bin/bash
python ScriptA.py &
python ScriptB.py &
Run Code Online (Sandbox Code Playgroud)
同时运行这两个脚本,但它总是使用 ScriptA 返回“无效语法”,即使所有 python 文件都在同一个文件夹中。
运行这两个脚本的文件:
def song():
user = input()
if user == "Chance":
python ScriptA.py &
python ScriptB.py &
else:
print("Error")
Run Code Online (Sandbox Code Playgroud)
到目前为止,我找到的解决方案(例如将该脚本放在一行中)不起作用,因为错误仍然显示。
- - - - - - - - - - - - - 编辑 - - - - - - - - - - - - ---
然而,这两个脚本单独运行良好,您提供的所有解决方案仍按顺序运行。脚本 A 是通过 OpenCV 播放的视频,脚本 B 是通过播放声音播放的歌曲。
脚本A:
import cv2
import numpy as np
import os
os.environ['SDL_VIDEO_CENTERED'] = '1'
cap = cv2.VideoCapture("video.mp4")
while(cap.isOpened()):
ret, frame = cap.read()
if ret == True:
cv2.imshow('Frame',frame)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
else:
break
cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
脚本B:
from playsound import playsound
a = (r"C:\Users\A\Desktop\sound.mp3")
playsound(a)
Run Code Online (Sandbox Code Playgroud)
如您所知,我正在尝试在视频旁边显示一首歌曲。我试图显示一个有声音的视频,但由于某种原因,openCV 没有输出声音。有什么建议?
我认为您正在寻找多线程
您可以将两个脚本合并到另一个脚本中,然后使用 theads 启动它们
- 编辑 -
from threading import Thread
import cv2
import numpy as np
import os
from playsound import playsound
def play_sound():
# import your script A
a = (r"C:\Users\A\Desktop\sound.mp3")
playsound(a)
def CV2_stuff():
# import your script B
os.environ['SDL_VIDEO_CENTERED'] = '1'
cap = cv2.VideoCapture("video.mp4")
...
Thread(target = play_sound).start()
Thread(target = CV2_stuff).start()
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你
这也可以
import ScriptA
import ScriptB
ScriptA.function()
ScriptB.function()
Run Code Online (Sandbox Code Playgroud)
但不会同时执行