我有两个独立的脚本,它们处于无限循环中。我需要从另一个主脚本中调用它们,并使它们同时运行。同时产生结果。
这是一些脚本
script1.py
y= 1000000000
while True:
y=y-1
print("y is now: ", y)
script2.py
x= 0
while True:
x=x+1
print("x is now: ", x)
目标是使用pyinstaller将主脚本编译到一个控制台中
答案 0 :(得分:1)
您可以使用python'multiprocessing'模块。
import os
from multiprocessing import Process
def script1:
os.system("script1.py")
def script2:
os.system("script2.py")
if __name__ == '__main__':
p = Process(target=script1)
q = Process(target=script2)
p.start()
q.start()
p.join()
q.join()
请注意,'print'语句可能不是检查进程并行性的准确方法。
答案 1 :(得分:0)
Python脚本在导入时执行。 因此,如果您真的想保持两个脚本不变,则可以在一个单独的过程中导入每个脚本,如下所示。
from threading import Thread
def one(): import script1
def two(): import script2
Thread(target=one).start()
Thread(target=two).start()
类似于,如果要两个进程而不是线程:
from multiprocessing import Process
def one(): import script1
def two(): import script2
Process(target=one).start()
Process(target=two).start()
答案 2 :(得分:-1)
将脚本代码包装在函数中,以便可以导入它们。
def main():
# script's code goes here
...
使用“ if main”保持脚本运行的能力。
if __name__ == '__main__':
main()
使用多处理或线程来运行创建的函数。
如果您确实无法使脚本可导入,则可以始终使用子流程模块,但是运行程序和脚本(如果需要)之间的通信会更加复杂。