[英]Running infinite loops using threads in python
我的程序是按以下方式设计的:
imshow
方法。 另外,我正在存储来自IP Camera的视频。 问题:我已经有了算法,问题是我需要在while循环中运行这两个算法。 条件是我无法退出任何一个。 现在线程是一个很好的选择,但我已经阅读了关于GIL的内容,那么如何运行两个无限循环呢?
from multiprocessing import Process
def methodA():
while TRUE:
do something
def methodB():
while TRUE:
do something
p=Process(target=methodA())
p.start()
p1=Process(target=methodB())
p1.start()
现在,当我启动进程p
它开始执行,之后如何启动p1
同时运行?
据我了解你的问题,你有两个不同的任务,你希望他们连续执行。 现在关于你的问题:
我该如何运行两个无限循环?
您可以创建两个不同的线程来为您运行这些无限循环。 第一个线程将执行您的task1,第二个线程将执行task2。
另外,一旦我开始执行一个线程,当第一个线程连续/无限运行时,如何执行另一个线程?
如果您使用两个不同的线程,那么您不必担心此问题。 如果线程没有共享任何资源,那么您不必担心这个事实。 但是,如果您想要从另一个线程停止/暂停一个线程,反之亦然,那么您可以使用标志或锁来实现一种机制。 这些问题在这种情况下会有所帮助:
为什么python threading.Thread对象有'start',但不是'stop'?
使用线程的示例:
from threading import Thread
class myClassA(Thread):
def __init__(self):
Thread.__init__(self)
self.daemon = True
self.start()
def run(self):
while True:
print 'A'
class myClassB(Thread):
def __init__(self):
Thread.__init__(self)
self.daemon = True
self.start()
def run(self):
while True:
print 'B'
myClassA()
myClassB()
while True:
pass
对于共享资源?
使用锁定 。 这里有些例子。 一 , 二和如何在python中同步线程?
如果我不想使用类运行它怎么办? 如何仅使用方法执行此操作?
from threading import Thread
def runA():
while True:
print 'A\n'
def runB():
while True:
print 'B\n'
if __name__ == "__main__":
t1 = Thread(target = runA)
t2 = Thread(target = runB)
t1.setDaemon(True)
t2.setDaemon(True)
t1.start()
t2.start()
while True:
pass
from threading import Thread
import time
class PrintA(Thread):
def __init__(self):
Thread.__init__(self)
self.running = True
def run(self):
while self.running:
print('A')
time.sleep(1)
def stop(self):
self.running = False
class PrintB(Thread):
def __init__(self):
Thread.__init__(self)
self.running = True
def run(self):
while self.running:
print('B')
time.sleep(2)
def stop(self):
self.running = False
a = PrintA()
b = PrintB()
a.start()
b.start()
time.sleep(10)
a.stop()
time.sleep(10)
b.stop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.