背景

jupyter notebook是以ipython为内核的,在编写程序的时候,经常遇到有些高IO的函数在后台运行半天,但是又需要在它运行的时候执行别的任务,因此这就用到了多线程。

其实ipython 已经封装好了多线程工具,只需要调用即可执行

简单使用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
from IPython.lib import backgroundjobs as bg
from time import sleep

jobs = bg.BackgroundJobManager()

def func1():
  sleep(1000000)
  return 1

# 创建任务
jobs.new(func1)

# 任务状态
jobs.status()
# Running jobs:
# 0 : <function func1 at 0x7fae1b670c80>

# 执行结果
result=jobs.result(0)

官方代码