亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python可停止調度在單獨的線程中

python可停止調度在單獨的線程中

九州編程 2021-11-16 16:39:51
我有一個來自sched模塊的 python 計劃,我想在一個單獨的線程中執行,同時能夠隨時停止它。我看了看,threading module但不知道哪種方法是實現這一點的最佳方法。時間表示例:>>> s.run()onetwothreeend線程中的調度示例:>>> t = threading.Thread(target = s.run)>>> t.start()onetwo>>> print("ok")okthreeend>>>想要的結果:>>> u = stoppable_schedule(s.run)>>> u.start()>>>onetwo>>> u.stop()"schedule stopped"
查看完整描述

1 回答

?
DIEA

TA貢獻1820條經驗 獲得超2個贊

您所描述的是可以異步停止的線程。


如上所述這里,有兩種主要的方法。其中之一是讓線程代碼檢查u.stop()它所做的每個操作的某個事件(在您的示例中由觸發)。


另一種解決方案是強制在某個線程中引發錯誤。這種方法實現起來更簡單,但可能會導致意外行為,并且您的線程代碼越復雜,它就越危險。


import ctypes



ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, 0)

tid要終止的線程在哪里。您可以通過運行(在線程中)來獲取線程 ID:


print self._thread_id

Tomer Filiba的thread2博客文章中有關于此的更多信息。


查看完整回答
反對 回復 2021-11-16
  • 1 回答
  • 0 關注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號