[英]concurrently run multiple python scripts without creating multiple scripts
[英]Run multiple python scripts concurrently
如何运行多个 python 脚本? 目前我运行一个这样的python script1.py
。
我试过python script1.py script2.py
不起作用:只运行了第一个脚本。 另外,我试过使用这样的单个文件;
import script1
import script2
python script1.py
python script2.py
但是,这也不起作用。
使用 Bash:
python script1.py &
python script2.py &
这就是整个脚本。 它将同时运行两个 Python 脚本。
Python 本身可以做同样的事情,但它需要更多的输入,对于手头的问题来说是一个糟糕的选择。
我认为虽然您采取了错误的方法来解决您的问题,但我想听听您的意见。
同时运行两个 Python 进程的最简单解决方案是从 bash 文件运行它们,并使用&
shell 运算符告诉每个进程进入后台。
python script1.py &
python script2.py &
要以更可控的方式并行运行多个进程,请查看Supervisor 项目,或使用多处理模块从 Python 内部进行编排。
我必须这样做并使用子流程。
import subprocess
subprocess.run("python3 script1.py & python3 script2.py", shell=True)
我在 node.js(在 Windows 10 上)中通过打开 2 个单独的 cmd 实例并在每个实例中运行每个程序来执行此操作。
这样做的优点是可以很容易地看到每个脚本对控制台的写入。
我看到在 python 中可以做同样的事情:2 个 shell。
您可以同时运行多个 IDLE/Python shell 实例。 因此,打开 IDLE 并运行服务器代码,然后再次打开 IDLE,这将启动一个单独的实例,然后运行您的客户端代码。
您可以使用
import os
os.system("script1.py && script2.py")
依此类推,您可以根据需要添加任意数量的脚本:只需用&&
分隔
这适用于 Windows 操作系统
我正在使用 Python IDLE 在 Windows 7 中工作。 我有两个程序,
# progA
while True:
m = input('progA is running ')
print (m)
和
# progB
while True:
m = input('progB is running ')
print (m)
我打开 IDLE,然后打开文件 progA.py。 我运行程序,当提示输入时,我输入"b" + <Enter>
然后"b" + <Enter>
"c" + <Enter>
我正在看这个窗口:
Python 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
= RESTART: C:\Users\Mike\AppData\Local\Programs\Python\Python36-32\progA.py =
progA is running b
b
progA is running c
c
progA is running
接下来,我回到 Windows 开始并再次打开 IDLE,这次打开文件 progB.py。 我运行程序,当提示输入时,我输入"x" + <Enter>
,然后"x" + <Enter>
"y" + <Enter>
我正在看这个窗口:
Python 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
= RESTART: C:\Users\Mike\AppData\Local\Programs\Python\Python36-32\progB.py =
progB is running x
x
progB is running y
y
progB is running
现在两个 IDLE Python 3.6.3 Shell 程序同时运行,一个 shell 运行 progA 而另一个运行 progB。
您可以使用Gnu-Parallel并发运行命令,适用于 Windows、Linux/Unix。
parallel ::: "python script1.py" "python script2.py"
建议在 bash 脚本的末尾添加一个wait
,因为脚本会在其中一个进程完成时退出。 如果我们需要脚本在所有python进程完成后才退出, wait
在bash脚本末尾添加一个wait
。
所以脚本将是
#!/bin/bash
python script1.py ;
python script2.py &
python script3.py &
wait
;
在第一个脚本的末尾用于运行 script1 & 一旦完成,然后并行启动 script2 & script3 并等待所有 3 个脚本都完成。
如果要并行运行两个Python脚本,则只需在脚本末尾包含以下内容:
if __name__=="__main__":
Main()
我认为最简单的方法是使用 PyCharm IDE 并安装“multirun”插件。 我在这里尝试了很多解决方案,但最终这个解决方案对我有用!
您可以尝试以下方法来运行多个 python 脚本:
import os
print "Starting script1"
os.system("python script1.py arg1 arg2 arg3")
print "script1 ended"
print "Starting script2"
os.system("python script2.py arg1 arg2 arg3")
print "script2 ended"
注意:多个脚本的执行纯粹依赖于带下划线的操作系统,不会并发,我回答的时候是Python新手。
更新:我找到了一个包: https : //pypi.org/project/schedule/上面的包可以用来运行多个脚本和功能,请检查这个,也许周末也会提供一些例子。
IE:
import schedule
import time
import script1, script2
def job():
print("I'm working...")
schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
schedule.every(5).to(10).days.do(job)
schedule.every().monday.do(job)
schedule.every().wednesday.at("13:15").do(job)
while True:
schedule.run_pending()
time.sleep(1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.