[英]Python - Threading - execute simultaneously
我有以下示例代码:
# some imports that I'm not including in the question
class daemon:
def start(self):
# do something, I'm not including what this script does to not write useless code to the question
self.run()
def run(self):
"""You should override this method when you subclass Daemon.
It will be called after the process has been daemonized by
start() or restart().
"""
class MyDaemon(daemon):
def run(self):
while True:
time.sleep(1)
if __name__ == "__main__":
daemonz = MyDaemon('/tmp/daemon-example.pid')
daemonz.start()
def firstfunction():
# do something
secondfunction()
def secondfunction():
# do something
thirdfunction()
def thirdfunction():
# do something
# here are some variables set that I am not writing
firstfunction()
如何从类“ daemon”的run(self)函数退出并继续执行最后一行中编写的firstfunction()? 我是Python的新手,我正在尝试学习
#EDIT我设法将守护程序类实现为踩踏类。 但首先我处于相同的情况,脚本保留在daemon类中,不执行其他行。
class MyThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def daemonize(self):
# istructions to daemonize my script process
def run(self):
self.daemonize()
def my_function():
print("MyFunction executed") # never executed
thread = MyThread()
thread.start()
my_function() # the process is successfully damonized but
# this function is never executed
您可以使用break
关键字退出循环,然后继续下一行。 return
可以用来退出函数。
class daemon:
def start(self):
self.run()
def run(self):
while True:
break
return
print() # This never executes
如果希望MyDaemon与其余代码一起运行,则必须使其成为进程或线程。 然后,代码将自动继续到下一行,同时运行MyDaemon类(线程/进程)。
import threading
class MyThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
print("Thread started")
while True:
pass
def my_function():
print("MyFunction executed")
thread = MyThread()
thread.start() # executes run(self)
my_function()
此代码产生以下结果:
Thread started
MyFunction executed
要使thread
成为守护程序,可以使用thread.setDaemon(True)
。 必须在启动线程之前调用该函数:
thread = MyThread()
thread.setDaemon(True)
thread.start()
my_function()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.