我正在寻找从新线程中的另一个python脚本中调用python函数。 我有使用subprocess.Popen的经验,但我用它在命令行中调用.exe。有人建议如何使用它或使用模块吗?
def main(argv):
call otherdef(1,2,3) in a new thread
sleep for 10 minutes
kill the otherdef process
def otherdef(num1, num2, num3):
while(True):
print num1
答案 0 :(得分:3)
这是一个解决方案,但它不完全像你问的那样,因为它很复杂地杀了一个线程。最好让线程自行终止,所有线程默认为daemonic = False(除非它的父线程是守护进程),所以当主线程死掉时,你的线程就会存在。将它设置为true,它将与你的主线程一起消失。
基本上你要做的就是启动Thread
并给它一个运行方法。您需要能够传递参数,以便您可以看到我传递args=
参数,并将值传递给目标方法。
import time
import threading
def otherdef(num1, num2, num3):
#Inside of otherdef we use an event to loop on,
#we do this so we can have a convent way to stop the process.
stopped = threading.Event()
#set a timer, after 10 seconds.. kill this loop
threading.Timer(10, stopped.set).start()
#while the event has not been triggered, do something useless
while(not stopped.is_set()):
print 'doing ', num1, num2, num3
stopped.wait(1)
print 'otherdef exiting'
print 'Running'
#create a thread, when I call start call the target and pass args
p = threading.Thread(target=otherdef, args=(1,2,3))
p.start()
#wait for the threadto finish
p.join(11)
print 'Done'
目前还不清楚您是否需要流程或线程,但如果您需要Process
导入多处理并将threading.Thread(
切换为multiprocessing.Process(
,则其他所有内容都保持不变。