我尝试在Jupyter笔记本中运行以下代码片段:
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()这是输出:
worker Starting
Thread-10 Starting
my_service Starting我没有看到以下预期输出:
Thread-10 Exiting
worker Exiting
my_service Exiting(在使用命令行运行我的python文件时,我确实得到了这些)
这在Jupyter笔记本中是典型的吗?
发布于 2020-01-08 01:44:19
一旦单元格的主线程中的Python语句结束,Jupyter就会收集输出并将其作为cell-result呈现。
在启动工作线程之后,尝试在Jupyter上的计算单元末尾添加一个time.sleep(1),它应该可以工作。
发布于 2021-03-10 06:26:19
您应该要求线程在单元格的主线程停止之前重新加入到该单元格的主线程中。这可以是donne,方法是
w.join()
w2.join()
t.join()在单元格的末端。
https://stackoverflow.com/questions/59633435
复制相似问题