最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python線程如何強制暫停、恢復(fù)、停止(非標(biāo)志位)

 更新時間:2024年02月18日 16:07:00   作者:夢醒人醉  
這篇文章主要介紹了python線程如何強制暫停、恢復(fù)、停止(非標(biāo)志位),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

python線程強制暫停、恢復(fù)、停止(非標(biāo)志位)

查了好多資料,網(wǎng)上無非都是通過event 標(biāo)志位進行python線程的暫停和停止。

并不是強制暫停和恢復(fù)線程。

直接上代碼吧

import threading
import ctypes
 
 
class CustomThread(threading.Thread):
    def __init__(self, target=None, args=(), kwargs=None, name=''):
        threading.Thread.__init__(self, target=target, args=args, kwargs=kwargs, name=name)
        self.kernel32 = ctypes.windll.kernel32
        self.thread_flag = 0
 
    def stop(self):
        ctypes.pythonapi.PyThreadState_SetAsyncExc(self.ident, ctypes.py_object(SystemExit))
        self.thread_flag = 0
        return self.thread_flag
 
    def start(self):
        threading.Thread.start(self)
        return
 
    def pause(self):
        handle = self.kernel32.OpenThread(0x0002, False, self.ident)
        self.kernel32.SuspendThread(handle)
        self.kernel32.CloseHandle(handle)
        self.thread_flag += 1
        return self.thread_flag
 
    def resume(self):
        handle = self.kernel32.OpenThread(0x0002, False, self.ident)
        self.kernel32.ResumeThread(handle)
        self.kernel32.CloseHandle(handle)
        self.thread_flag -= 1
        return self.thread_flag

讓python程序能夠任意時刻暫停和恢復(fù)

需求

要讓一個運行中的程序可以在任意時刻被我們暫停并且恢復(fù)后能恢復(fù)到暫停前的狀態(tài)

解決方案

利用os讀取文件的方式來實現(xiàn)程序的控制

測試實例:

import datetime
 
starttime = datetime.datetime.now()
for i in range(2000):
    print("第%d次循環(huán)"%i)
 
endtime = datetime.datetime.now()
print ('相差:%s秒'%(endtime-starttime).seconds)
print ('相差:%s微秒'%(endtime-starttime).microseconds)
  • 相差:13秒
  • 相差:332692微秒

解決方案一

利用configparser來使用配置文件來實現(xiàn),當(dāng)需要暫停時修改配置文件中的值來實現(xiàn)暫停。這種方案的優(yōu)點在于可以修改運行過程中的變量值

配置文件testConfig.ini

[config]
pause = false

實現(xiàn)

import configparser
import datetime
 
cf = configparser.ConfigParser()
 
starttime = datetime.datetime.now()
for i in range(2000):
    cf.read("testConfig.ini")
    pause = cf.getboolean("config", "pause")
    print("第%d次循環(huán)"%i)
    if pause:
        os.system("pause")
 
endtime = datetime.datetime.now()
print ('相差:%s秒'%(endtime-starttime).seconds)
print ('相差:%s微秒'%(endtime-starttime).microseconds)
  • 相差:13秒
  • 相差:866351微秒

解決方案二

利用os模塊讀取文件來實現(xiàn)

文本文檔pause.txt

false

實現(xiàn)

import os
import datetime
 
starttime = datetime.datetime.now()
for i in range(2000):
    f = open('pause.txt','r',encoding='utf-8')
    sttr = f.readline()
    print("第%d次循環(huán)"%i)
    if sttr =='true':
        os.system("pause")
 
endtime = datetime.datetime.now()
print ('相差:%s秒'%(endtime-starttime).seconds)
print ('相差:%s微秒'%(endtime-starttime).microseconds)
  • 相差:13秒
  • 相差:360924微秒

作者的話

這其實是一種討巧的方法,這只適合自己使用腳本來用,生產(chǎn)上還是要用多線程的方法來實現(xiàn),不過你要是對于python高級編程不夠嫻熟,那么可以看看我的這種方法,也算給大家提供一個思路。

你要是說想實現(xiàn)命令行中輸入任意暫停,可以再寫個專門用來修改文本的python腳本打開,這其實就是一種另類的多線程,你要是覺得麻煩也能多線程實現(xiàn)這兩種功能,一個線程為工作線程,一個線程為修改文件線程。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • pycharm遠(yuǎn)程調(diào)試openstack代碼

    pycharm遠(yuǎn)程調(diào)試openstack代碼

    這篇文章主要為大家詳細(xì)介紹了pycharm遠(yuǎn)程調(diào)試openstack的代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Python中的特殊語法:filter、map、reduce、lambda介紹

    Python中的特殊語法:filter、map、reduce、lambda介紹

    這篇文章主要介紹了Python中的特殊語法:filter、map、reduce、lambda介紹,本文分別對這個特殊語法給出了代碼實例,需要的朋友可以參考下
    2015-04-04
  • Python考拉茲猜想輸出序列代碼實踐

    Python考拉茲猜想輸出序列代碼實踐

    這篇文章主要介紹了Python考拉茲猜想輸出序列代碼實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • python tkinter的消息框模塊(messagebox,simpledialog)

    python tkinter的消息框模塊(messagebox,simpledialog)

    這篇文章主要介紹了python tkinter的消息框模塊,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • python 第三方庫paramiko的常用方式

    python 第三方庫paramiko的常用方式

    這篇文章主要介紹了python 第三方庫paramiko的常用方式,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Python+Tkinter打造簽名設(shè)計工具

    Python+Tkinter打造簽名設(shè)計工具

    這篇文章主要為大家分享如何利用Python Tkinter庫制作帶圖形界面的一個簽名設(shè)計工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-04-04
  • python實現(xiàn)各種插值法(數(shù)值分析)

    python實現(xiàn)各種插值法(數(shù)值分析)

    這篇文章主要介紹了python實現(xiàn)各種插值法(數(shù)值分析),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python流程控制語句的深入講解

    Python流程控制語句的深入講解

    這篇文章主要給大家介紹了關(guān)于Python流程控制語句的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 用python 批量更改圖像尺寸到統(tǒng)一大小的方法

    用python 批量更改圖像尺寸到統(tǒng)一大小的方法

    下面小編就為大家分享一篇用python 批量更改圖像尺寸到統(tǒng)一大小的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • python如何實現(xiàn)常用的五種排序算法詳解

    python如何實現(xiàn)常用的五種排序算法詳解

    排序有很多種實現(xiàn)方法,比如冒泡排序、選擇排序、歸并排序、希爾排序、快速排序、插入排序、堆排序、基數(shù)排序等,這篇文章主要給大家介紹了關(guān)于python如何實現(xiàn)常用的五種排序算法,需要的朋友可以參考下
    2021-08-08

最新評論

普宁市| 台东市| 铁岭县| 定陶县| 沧源| 广汉市| 庆元县| 巩留县| 监利县| 措美县| 怀宁县| 祁阳县| 天等县| 杂多县| 承德县| 惠安县| 大埔县| 炎陵县| 凯里市| 平昌县| 松桃| 井陉县| 阿克苏市| 靖江市| 沅江市| 临朐县| 沂水县| 江津市| 治县。| 牡丹江市| 临安市| 阿尔山市| 长海县| 乌兰县| 蒙山县| 扬中市| 崇左市| 昔阳县| 昌乐县| 和硕县| 连云港市|