Skip to content

Instantly share code, notes, and snippets.

@tjwei
Created January 24, 2019 11:46
Show Gist options
  • Save tjwei/1692f44c7672518583955691bdc3b66c to your computer and use it in GitHub Desktop.
Save tjwei/1692f44c7672518583955691bdc3b66c to your computer and use it in GitHub Desktop.
import time
import sys
sys.path.append('/Users/tjw/anaconda3/envs/py35/lib/python3.5/site-packages')
from ipykernel.kernelapp import IPKernelApp
from tornado import ioloop
from bpy.app.handlers import persistent, scene_update_pre
class StepIPKernelApp(IPKernelApp):
def prep_start(self):
if self.subapp is not None:
return self.subapp.start()
if self.poller is not None:
self.poller.start()
self.kernel.start()
self.io_loop = ioloop.IOLoop.current()
def step(self):
try:
self.io_loop.add_callback(
lambda: self.io_loop.add_callback(self.io_loop.stop))
self.io_loop.start()
except KeyboardInterrupt:
pass
sys.argv = ['blender_kernel', '-f', sys.argv[-1]]
stderr = sys.stderr
app = None
running = False
@persistent
def ipykernel_timer(_):
global app
global running
if running:
return
running = True
if app is None:
app = StepIPKernelApp.instance()
app.initialize()
app.prep_start()
app.step()
running = False
scene_update_pre.append(ipykernel_timer)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment