Python 在多线程中分叉
Python forking inside multithreading
我想要一个服务器和一个检查网络中所有计算机的功能。我想在固定时间段内定期调用计算机检查功能。所以我想使用 'select' 来包含服务器和函数。是否允许将函数作为参数传递给 select,或者我是否只允许将列表传递给 select?
你建议我做什么才能让函数每 5 秒左右调用一次?
尝试实现您自己的线程,每五秒调用一次传递的函数。
from threading import *
import time
def my_function():
print 'Running ...' # replace
class EventSchedule(Thread):
def __init__(self, function):
self.running = False
self.function = function
super(EventSchedule, self).__init__()
def start(self):
self.running = True
super(EventSchedule, self).start()
def run(self):
while self.running:
self.function() # call function
time.sleep(5) # wait 5 secs
def stop(self):
self.running = False
thread = EventSchedule(my_function) # pass function
thread.start() # start thread
只需使用threading.Timer
import threading
def check_func():
# other stuff
threading.Timer(5.0, check_func).start() # run check_func after 5s
check_func()
这是在 python 中执行定期作业的标准方法。
我想要一个服务器和一个检查网络中所有计算机的功能。我想在固定时间段内定期调用计算机检查功能。所以我想使用 'select' 来包含服务器和函数。是否允许将函数作为参数传递给 select,或者我是否只允许将列表传递给 select?
你建议我做什么才能让函数每 5 秒左右调用一次?
尝试实现您自己的线程,每五秒调用一次传递的函数。
from threading import *
import time
def my_function():
print 'Running ...' # replace
class EventSchedule(Thread):
def __init__(self, function):
self.running = False
self.function = function
super(EventSchedule, self).__init__()
def start(self):
self.running = True
super(EventSchedule, self).start()
def run(self):
while self.running:
self.function() # call function
time.sleep(5) # wait 5 secs
def stop(self):
self.running = False
thread = EventSchedule(my_function) # pass function
thread.start() # start thread
只需使用threading.Timer
import threading
def check_func():
# other stuff
threading.Timer(5.0, check_func).start() # run check_func after 5s
check_func()
这是在 python 中执行定期作业的标准方法。