在Python中,创建线程然后join()比正常的阻塞过程有什么好处吗?
在Python中,创建线程然后join()比正常的阻塞过程有什么好处吗?例如,此代码是否为:在Python中,创建线程然后join()比正常的阻塞过程有什么好处吗?,python,multithreading,multiprocessing,Python,Multithreading,Multiprocessing,在Python中,创建线程然后join()比正常的阻塞过程有什么好处吗?例如,此代码是否为: def sleep(): time.sleep(5) print "start..." t = threading.Thread(target=sleep) t.start() t.join() print "end..." 再好不过了: def sleep(): time.sleep(5) print "start..." sleep() print "end..." 是否存在
def sleep():
time.sleep(5)
print "start..."
t = threading.Thread(target=sleep)
t.start()
t.join()
print "end..."
再好不过了:
def sleep():
time.sleep(5)
print "start..."
sleep()
print "end..."
是否存在其中一个优于另一个的用例或情况?通常,如果您在单个线程上加入,那么与非线程方法相比,没有多少好处 我能想到的唯一一件事是,您可以为指定超时来限制计算可能需要的时间。这在没有线程的情况下也是可能的,但需要修改目标函数(定期检查是否已达到时间限制)。对
join
使用超时对底层函数是透明的
显然,如果您有多个线程,那么连接其中一个或多个线程与单线程程序截然不同,因为线程并行工作,而只有主线程等待连接完成。这两个线程都不好,因为它们都没有意义。请用一个实际问题来说明您的问题。调用
join(timeout)
不会限制后台线程中的计算可能需要的时间。它只会限制调用线程愿意等待它的时间。@jameslarge您是对的,我是草率的。谢谢你的澄清!在join(timeout)
返回后,需要调用is\u alive
来检查线程是否仍在运行并(如果仍在运行)停止它——理想情况下是以合作的方式。