同时运行两个python文件


问题内容

我尝试使用

#!/bin/bash
python ScriptA.py &
python ScriptB.py &

可以同时运行两个脚本,但是即使所有python文件都位于同一文件夹中,它也始终使用ScriptA返回“无效语法”。

运行两个脚本的文件:

def song():
user = input()
    if user == "Chance":
        python ScriptA.py &
        python ScriptB.py &
   else:
        print("Error")

到目前为止,我发现的解决方案(例如将该脚本放在一行中)不起作用,因为错误仍然显示。

- - - - - - - - - - - - - 编辑 - - - - - - - - - - - - —

两个脚本都可以单独正常运行,但是,您提供的所有解决方案仍按顺序运行。脚本A是通过OpenCV播放的视频,脚本B是通过playsound播放的歌曲。

脚本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()

脚本B:

from playsound import playsound
a = (r"C:\Users\A\Desktop\sound.mp3")
playsound(a)

您可能会说,我正在尝试在视频旁边显示一首歌曲。我试图显示有声音的视频,但是由于某些原因,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()

希望能帮助到你

这也可以工作

import ScriptA
import ScriptB

ScriptA.function()
ScriptB.function()

但不会在同一时间被感染