同时运行两个python文件
我试过使用同时运行两个python文件,python,parallel-processing,scripting,Python,Parallel Processing,Scripting,我试过使用 #!/bin/bash python ScriptA.py & python ScriptB.py & 同时运行这两个脚本,但它始终使用ScriptA返回“无效语法”,即使所有python文件都在同一文件夹中 运行两个脚本的文件: def song(): user = input() if user == "Chance": python ScriptA.py & python ScriptB.py &
#!/bin/bash
python ScriptA.py &
python ScriptB.py &
同时运行这两个脚本,但它始终使用ScriptA返回“无效语法”,即使所有python文件都在同一文件夹中
运行两个脚本的文件:
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没有输出声音。有什么建议吗 您必须导入
os
模块并使用system
函数,然后将&
运行的两个Python文件分开
import os
def song():
user = input()
if user == "Chance":
os.system('python ScriptA.py && python ScriptB.py')
else:
print("Error")
song()
但我会建议您只需将要运行的两个文件导入到第三个文件中,然后像普通函数一样运行其中的函数
e、 g
如果脚本中没有函数,则脚本会在导入后立即运行。您可以尝试操作系统:
import os
os.system("python ScriptA.py &")
os.system("python ScriptB.py &")
我认为您正在寻找多线程 您可以将两个脚本合并到另一个脚本中, 然后用磁带发射 --编辑--
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()
但是它们不会同时被执行您可以在python空闲状态下打开这两个文件并运行它们。
如果您需要同时运行两个文件(第一种方式是延迟按F5键),您可以使用PyCharm并下载multirun插件。单独执行时,两个脚本都工作正常?第二个代码段是什么语言?或者,更确切地说,它是什么语言?它在sh和python中都是无效语法。@Mufeed提出了正确的问题。“无效语法”错误与文件位于同一文件夹中无关。可能您的ScriptA.py中存在python语法错误,因为您提供的python脚本中也存在语法错误。为了澄清这一点,两个脚本在单独执行时都工作得非常好。由于python中的GIL(全局解释器锁),在给定时间内只能运行一个线程,检查这一点,这将不会像OP预期的那样并行运行。您可能应该在两个不同的线程中调用函数。正如penguin所说,它不会并行运行,我在我的原始帖子中包含了更多信息。我尝试过,但仍然没有成功,我编辑了我的原始帖子来帮助澄清我的情况。我在这里的解决方案是制作一个包含两个函数的脚本,然后用命令调用它们,我也会编辑我的帖子:)非常感谢Peko,它很有效!现在我所要做的就是找出如何循环视频直到歌曲结束,这样视频就可以结束并返回到另一个脚本。我试过了,它按顺序显示。我已经更新了我的原始帖子,以帮助理解我正在尝试做什么
import ScriptA
import ScriptB
ScriptA.function()
ScriptB.function()