python多线程的join
最近写东西有个问题,如果有多个子线程,而主线程要等所有子线程结束接着执行,这个该咋实现?据我所知join方法好像会把主线程启动后面子线程的代码也堵塞掉 使用线程池,把子线程丢进去
threadPool = ThreadPoolExecutor(max_workers=3, thread_name_prefix="test_")
for user in lines:
threadPool.submit(method) Robertshuai 发表于 2024-1-3 17:23
使用线程池,把子线程丢进去
threadPool = ThreadPoolExecutor(max_workers=3, ...
method是子线程对象吗{:1_904:} 本帖最后由 redballoon 于 2024-1-3 18:35 编辑
pythonhnm 发表于 2024-1-3 17:35
method是子线程对象吗
method是你要做事的函数调用,还有submit方法不如map好用
import threading
def fun(num):
print(f'{num} is over!')
if __name__ == "__main__":
for i in range(1, 5):
p = threading.Thread(target=fun, args=(i,))
p.start()
p.join()
print("begin to do some things")
是这意思吗 亮哥vvv 发表于 2024-1-3 18:13
import threading
def fun(num):
这样的话会堵塞for循环吧? pythonhnm 发表于 2024-1-3 18:37
这样的话会堵塞for循环吧?
import threading
def fun(num):
print(f'{num} is over!')
if __name__ == "__main__":
threads = []
for i in range(1, 5):
p = threading.Thread(target=fun, args=(i,))
p.start()
threads.append(p)
for thread in threads:
thread.join()
print("begin to do some things")
这样 亮哥vvv 发表于 2024-1-4 09:49
import threading
def fun(num):
for thread in threads:
thread.join()
这里会把后面的join也堵塞掉吧? 本帖最后由 亮哥vvv 于 2024-1-4 17:27 编辑
pythonhnm 发表于 2024-1-4 13:15
for thread in threads:
thread.join()
这里会把后面的join也堵塞掉吧?
没关系呀 线程已经跑起来了 join 的 时候 线程会有两种情况 要么正在跑 要么跑完了 for 循环的时候 要么相应的线程跑完了 直接下一个线程的 join要么没跑完 阻塞住主线程 等待它完 但此时不会影响其它线程的执行这个线程完了 还是 判下一个线程 所有线程都执行完了其 join 也就是 所有线程都执行完了再执行主线程 亮哥vvv 发表于 2024-1-4 15:37
没关系呀 线程已经跑起来了 json 的 时候 线程会有两种情况 要么正在跑 要么跑完了 for 循环的时候 要么 ...
好的,谢谢!
页:
[1]
2