【发布时间】:2018-03-03 04:51:27
【问题描述】:
我正在运行以下代码:
from threading import Thread
from time import sleep
def file_write(file_input, num_lines):
sleep(10)
file = open("testfile.txt", "w")
for line in num_lines:
file.write("{}: {}".format(line, file_input))
file.close()
if __name__ == '__main__':
curr_thread = Thread(target=file_write, args=("Norah", range(5)))
curr_thread.daemon = False
curr_thread.start()
期望是主线程会立即退出,因为我没有调用join。但事实并非如此。睡眠调用也会阻塞主线程吗?
编辑:在这个线程中有一个类似的问题:time.sleep -- sleeps thread or process? 但它不一样。
我查看了线程:它说睡眠不会导致子进程相互阻塞,但它没有说明主线程会发生什么。当我从接受的答案运行代码时,主线程并没有像我想的那样立即退出。
更新:看起来多线程无法解决我的问题:目的是在后台运行一堆任务。我现在正在使用 subprocess 模块。
【问题讨论】:
-
我查看了线程:它说睡眠不会导致子进程相互阻塞,但它没有说明主线程会发生什么。当我从接受的答案运行代码时,主线程并没有像我想的那样立即退出。
-
你在做
curr_thread.join()吗?主线程应立即退出。加入线程会等到线程完成后再退出。 -
我没有进行任何加入调用:我只运行我上面粘贴的内容。
-
我刚刚运行了代码here。自己试试吧。你应该看到它打印出“a”、“b”、“d”、“e”、(主线程退出)、“c”。编辑:我也运行了您的代码,主线程按您的预期立即退出。
标签: python multithreading sleep