2017-08-30 72 views
-1

我正在使用2个python脚本: 脚本1使用subprocess.Popen()在脚本2中执行一个进程。在执行此过程时(需要一些时间),脚本1正在执行其他任务。 问题1)子过程是否是解决这个问题的最好方法? 问题2)有没有什么办法通过使用通讯()将脚本1中的变量(只有int/float值)传递给脚本2 BESIDES?我如何在脚本2中使用这些变量(即我如何解决它们)?Python子流程标准杆

感谢您的帮助!

回答

0

如果两者都是python,为什么还要去终端?

你可以使用pythons线程。如果您想通过终端做它,你可以传递参数是这样的:

process = subprocess.Popen(["python", "script2.py", "args"]) 
process.communicate() 

或沿着这些线路至少东西(这可能是错误的心中已经永远不会调用POPEN一个Python)。我如何做到这一点是通过使用python线程模块(所以这不会与上面描述的Popen一起工作,如果你想要一个特定的答案,我想看看这些脚本文件是怎么样的)。总之:

script1.py:

from threading import Thread 
from sources.script2 import prnt 
import time 

# 'Script1 function' 
def prnt1(): 
    for i in range(5000): 
     print('script1: %s' % i)  
     time.sleep(0.5) 

# Starting 'script2' 
t = Thread(target=prnt, args=(100, 4500)).start() 
prnt1() 

script2.py:上面的,如果我们不知道你要运行它很难给脚本什么说

import time 

def prnt(start, stop): 
    for i in range(start, stop): 
     print('script2: %s' % i) 
     time.sleep(0.5) 

但是像咨询。你的脚本是否有一个定义为入口点的函数?或仅作为独立使用?,等...