Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同时运行两个python文件_Python_Parallel Processing_Scripting - Fatal编程技术网

同时运行两个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()