python – 没有while循环每n秒做一次事情?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 没有while循环每n秒做一次事情?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1199字,纯文字阅读大概需要2分钟。
内容图文
![python – 没有while循环每n秒做一次事情?](/upload/InfoBanner/zyjiaocheng/792/db9566a586b24f4a9035e5ddc794b0b2.jpg)
好吧,我正在尝试为Blender写一个附加组件,我需要每隔n秒做一次,但是,我不能使用while循环,因为它冻结了Blender!我该怎么办?
解决方法:
从Strange errors using ‘threading’ module的Blender API文档:
Python threading with Blender only works properly when the threads finish up before the script does. By using threading.join() for example.
Note: Pythons threads only allow co-currency and won’t speed up your scripts on multi-processor systems, the subprocess and multiprocess modules can be used with blender and make use of multiple CPU’s too.
from threading import Thread, Event
class Repeat(Thread):
def __init__(self,delay,function,*args,**kwargs):
Thread.__init__(self)
self.abort = Event()
self.delay = delay
self.args = args
self.kwargs = kwargs
self.function = function
def stop(self):
self.abort.set()
def run(self):
while not self.abort.isSet():
self.function(*self.args,**self.kwargs)
self.abort.wait(self.delay)
例:
from time import sleep
def do_work(foo):
print "busy", foo
r = Repeat(1,do_work,3.14) # execute do_work(3.14) every second
r.start() # start the thread
sleep(5) # let this demo run for 5s
r.stop() # tell the thread to wake up and stop
r.join() # don't forget to .join() before your script ends
内容总结
以上是互联网集市为您收集整理的python – 没有while循环每n秒做一次事情?全部内容,希望文章能够帮你解决python – 没有while循环每n秒做一次事情?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。