日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python停止线程池_详解python中Threadpool线程池任务终止示例代码

發布時間:2025/3/20 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python停止线程池_详解python中Threadpool线程池任务终止示例代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

需求

加入我們需要處理一串個位數(0~9),奇數時需要循環打印它;偶數則等待對應時長并完成所有任務;0則是錯誤,但不需要終止任務,可以自定義一些處理。

關鍵點

定義func函數處理需求

callback處理返回結果,只有偶數和0返回;奇數會一直執行;要控制線程池狀態,則需要針對偶數和0時拋出異常,并捕獲異常處理。

threadpool定義線程池并發

實現# -*- coding: utf-8 -*-

from threadpool import makeRequests, ThreadPool

import time

from multiprocessing import Process

異常定義和特殊值(0)定義class Finish(SyntaxWarning):

passclass PauseInfo(SyntaxWarning):

pass

pause_num = 0

func函數定義

0時返回False,其他偶數返回Truedef func(para):

if para == pause_num:

print('start for %d and wait %ds' % (para, 4))

time.sleep(4)

print('error bcs ',para)

return False

if para % 2 == 0:

print('start for %d and wait %ds' % (para, para))

time.sleep(para)

print('stop for', para)

return True

while True:

print('continue for', para)

time.sleep(para)

callback定義def callback(request, result):

if result:

raise Finish

else:

raise PauseInfo

線程池處理

Finish標識任務完成,再次誘發異常退出線程池處理;def main_thread(paras):

pool = ThreadPool(10)

requests = makeRequests(callable_=func, args_list=paras, callback=callback)

[pool.putRequest(req) for req in requests]

while True:

try:

pool.wait()

except Finish as e:

raise SystemExit

except PauseInfo as e:

print('Pause bcs %d but will continue' % pause_num)

except Exception as e:

print('Unknown error so will quit')

raise SystemExit

主函數起一個測試進程if name == 'main':

while True:

s = input('Input number list to test and any other word to quit\n')

paras = []

for para in s:

if para.isnumeric():

paras.append(int(para))

else:

break

try:

thread_test = Process(target=main_thread, args=(paras,))

thread_test.start()

thread_test.join(timeout=20)

except TimeoutError as e:

print('task timeout')

except Exception as e:

print('unknow error:',e)

結果驗證

處理108,看打印可以看到,1被循環處理,0處理的時候報錯;8處理完畢則任務結束

Input number list to test and any other word to quit

108

continue for 1

start for 0 and wait 4s

start for 8 and wait 8s

continue for 1

continue for 1

continue for 1

error bcs 0

continue for 1

Pause bcs 0 but will continue

continue for 1

continue for 1

continue for 1

continue for 1

stop for 8

Input number list to test and any other word to quit

以上就是詳解python中Threadpool線程池任務終止示例代碼的詳細內容,更多請關注php中文網其它相關文章!

本文原創發布php中文網,轉載請注明出處,感謝您的尊重!

總結

以上是生活随笔為你收集整理的python停止线程池_详解python中Threadpool线程池任务终止示例代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。