Python 3.4 子流程
Python 3.4 subprocess
以下在 Python 2.7 中有效,我相信这就是我使用的。我目前正在尝试将所有内容更新到 Python 3.4,但这根本不起作用。当我 运行 程序时,它只是停止并且不会出现 运行 我要求它 运行 的任何进程。我希望它同时多次 运行 某个进程(子进程将自身更新为一个新值,因此它不会每次都尝试做同样的事情)。我做错了什么?
#!/usr/bin/ python3.4
import sys
import subprocess
procs=[]
for i in range(3):
proc=subprocess.Popen(['python','test.py'])
procs.append(proc)
for proc in procs:
proc.wait()
我刚试过:
#!/usr/bin/python3.4
import sys
import subprocess
procs=[]
for i in range(3):
print ('hello')
proc=subprocess.Popen(['python','test.py'])
print ('hi')
procs.append(proc)
print ('goodbye')
for proc in procs:
proc.wait()
它打印出三个 hello, hi, goodbye 很好,但我写得很快:
#!/usr/bin/python3.4
print('hello')
对于 test.py 而它根本 运行 没有那个程序。
问题可能是由于您为子进程调用 python 的方式所致。当解释器被显式调用为 python script.py
时,"hashbang" 将被忽略,解释器将为 python
。根据您的系统,可能是 Python.
的不同版本
在您的代码中 Popen(['python','test.py'])
明确使用 python
作为解释器。 如果 你有不同版本的解释器,例如Python 2.7,作为默认解释器,那将是 运行,而不是您希望的 Python 3.4。
反过来,如果您的子进程脚本不能 运行 正确地使用 Python 2.7,如果您使用 tkinter
很可能就是这种情况,那么您可能有你遇到的问题。
如果这是问题所在,您可以通过明确使用正确的解释器来解决它,例如
Popen(['python3.4','test.py'])
或者您可以依靠 hashbang 调用正确的解释器:
Popen(['/path/to/test.py'])
如果脚本文件具有可执行权限,这应该可以工作。
以下在 Python 2.7 中有效,我相信这就是我使用的。我目前正在尝试将所有内容更新到 Python 3.4,但这根本不起作用。当我 运行 程序时,它只是停止并且不会出现 运行 我要求它 运行 的任何进程。我希望它同时多次 运行 某个进程(子进程将自身更新为一个新值,因此它不会每次都尝试做同样的事情)。我做错了什么?
#!/usr/bin/ python3.4
import sys
import subprocess
procs=[]
for i in range(3):
proc=subprocess.Popen(['python','test.py'])
procs.append(proc)
for proc in procs:
proc.wait()
我刚试过:
#!/usr/bin/python3.4
import sys
import subprocess
procs=[]
for i in range(3):
print ('hello')
proc=subprocess.Popen(['python','test.py'])
print ('hi')
procs.append(proc)
print ('goodbye')
for proc in procs:
proc.wait()
它打印出三个 hello, hi, goodbye 很好,但我写得很快:
#!/usr/bin/python3.4
print('hello')
对于 test.py 而它根本 运行 没有那个程序。
问题可能是由于您为子进程调用 python 的方式所致。当解释器被显式调用为 python script.py
时,"hashbang" 将被忽略,解释器将为 python
。根据您的系统,可能是 Python.
在您的代码中 Popen(['python','test.py'])
明确使用 python
作为解释器。 如果 你有不同版本的解释器,例如Python 2.7,作为默认解释器,那将是 运行,而不是您希望的 Python 3.4。
反过来,如果您的子进程脚本不能 运行 正确地使用 Python 2.7,如果您使用 tkinter
很可能就是这种情况,那么您可能有你遇到的问题。
如果这是问题所在,您可以通过明确使用正确的解释器来解决它,例如
Popen(['python3.4','test.py'])
或者您可以依靠 hashbang 调用正确的解释器:
Popen(['/path/to/test.py'])
如果脚本文件具有可执行权限,这应该可以工作。