首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jupyter notebook中的线程

Jupyter notebook中的线程
EN

Stack Overflow用户
提问于 2020-01-08 01:38:05
回答 2查看 3.7K关注 0票数 3

我尝试在Jupyter笔记本中运行以下代码片段:

代码语言:javascript
复制
    import threading
    import time         
    def worker():
        print(threading.current_thread().getName(), 'Starting')
        time.sleep(0.2)
        print(threading.current_thread().getName(), 'Exiting')


    def my_service():
        print(threading.current_thread().getName(), 'Starting')
        time.sleep(0.3)
        print(threading.current_thread().getName(), 'Exiting')


    t = threading.Thread(name='my_service', target=my_service)
    w = threading.Thread(name='worker', target=worker)
    w2 = threading.Thread(target=worker)  # use default name

    w.start()
    w2.start()
    t.start()

这是输出:

代码语言:javascript
复制
    worker Starting
    Thread-10 Starting
    my_service Starting

我没有看到以下预期输出:

代码语言:javascript
复制
    Thread-10 Exiting
    worker Exiting
    my_service Exiting

(在使用命令行运行我的python文件时,我确实得到了这些)

这在Jupyter笔记本中是典型的吗?

EN

回答 2

Stack Overflow用户

发布于 2020-01-08 01:44:19

一旦单元格的主线程中的Python语句结束,Jupyter就会收集输出并将其作为cell-result呈现。

在启动工作线程之后,尝试在Jupyter上的计算单元末尾添加一个time.sleep(1),它应该可以工作。

票数 2
EN

Stack Overflow用户

发布于 2021-03-10 06:26:19

您应该要求线程在单元格的主线程停止之前重新加入到该单元格的主线程中。这可以是donne,方法是

代码语言:javascript
复制
w.join()
w2.join()
t.join()

在单元格的末端。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59633435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档