Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
38
Task/Active-object/Python/active-object.py
Normal file
38
Task/Active-object/Python/active-object.py
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
from time import time, sleep
|
||||
from threading import Thread
|
||||
|
||||
class Integrator(Thread):
|
||||
'continuously integrate a function `K`, at each `interval` seconds'
|
||||
def __init__(self, K=lambda t:0, interval=1e-4):
|
||||
Thread.__init__(self)
|
||||
self.interval = interval
|
||||
self.K = K
|
||||
self.S = 0.0
|
||||
self.__run = True
|
||||
self.start()
|
||||
|
||||
def run(self):
|
||||
"entry point for the thread"
|
||||
interval = self.interval
|
||||
start = time()
|
||||
t0, k0 = 0, self.K(0)
|
||||
while self.__run:
|
||||
sleep(interval)
|
||||
t1 = time() - start
|
||||
k1 = self.K(t1)
|
||||
self.S += (k1 + k0)*(t1 - t0)/2.0
|
||||
t0, k0 = t1, k1
|
||||
|
||||
def join(self):
|
||||
self.__run = False
|
||||
Thread.join(self)
|
||||
|
||||
if __name__ == "__main__":
|
||||
from math import sin, pi
|
||||
|
||||
ai = Integrator(lambda t: sin(pi*t))
|
||||
sleep(2)
|
||||
print(ai.S)
|
||||
ai.K = lambda t: 0
|
||||
sleep(0.5)
|
||||
print(ai.S)
|
||||
Loading…
Add table
Add a link
Reference in a new issue