我正在研究制作python脚本,其中有一个主GUI脚本,可以执行一个单独脚本的多个实例。我需要将这些实例分开,因此线程在这里无法工作。我正在研究多处理,但是当我尝试从主脚本执行下标中的功能时,它只会再次启动主脚本。
主GUI
#Gui code...
import multiprocessing
import Subscript
for i in range (0, timestoruninstance):
p = multiprocessing.Process(target=Subscript.on)
p.start()
Subscript.py
def on():
print("Something that will be different each script instance")
运行此代码时,主gui实例似乎只是重复自身,而不是运行多个下标实例。
答案 0 :(得分:0)
将您的主要代码放入if __name__='__main__'
中。据我了解,您的代码直接位于文件中:
import multiprocessing
do_some_funcs()
def on() :
....
在python中,该过程从头到尾读取文件,然后继续执行代码。启动一个进程会创建一个新的python执行,这与共享相同对象,导入和所有内容的线程相反。
为防止您的代码运行两次,应执行以下操作:
import multiprocessing
def on():
...
if __name__ = '__main__' :
do_some_funcs() ...
p = multiprocessing.Process(target=Subscript.on)
p.start()
希望有帮助!