旧线程完成后如何启动新线程?

旧线程完成后如何启动新线程?,第1张

线程完成后如何启动新线程?

正如我在评论中建议的那样,我认为使用a

multiprocessing.pool.ThreadPool
是合适的-
因为它可以自动处理许多您在代码中手动执行的线程管理。一旦所有线程都通过
ThreadPool
apply_async()
方法调用排队等待处理,唯一需要做的就是等待它们全部完成执行(当然,除非您的代码可以做其他事情)。

我已经将链接的答案中的代码翻译为另一个相关问题,因此它与您在使当前上下文中的内容易于理解时所执行的 *** 作更加相似。

from multiprocessing.pool import ThreadPoolfrom random import randintimport threadingimport timeMAX_THREADS = 5print_lock = threading.Lock()  # Prevent overlapped printing from threads.def query_data(trade):    trade_id = trade[0][1][:6]    time.sleep(randint(1, 3))  # Simulate variable working time for testing.    with print_lock:        print(trade_id)def process_trades(trade_list):    pool = ThreadPool(processes=MAX_THREADS)    results = []    while(trade_list):        trade = trade_list.pop()        results.append(pool.apply_async(query_data, (trade,)))    pool.close()  # Done adding tasks.    pool.join()  # Wait for all tasks to complete.def test():    trade_list = [[['abc', ('%06d' % id) + 'defghi']] for id in range(1, 101)]    process_trades(trade_list)if __name__ == "__main__":    test()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5640022.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存