亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python線程Event例子

發布時間:2020-07-12 00:04:18 來源:網絡 閱讀:577 作者:windcharger 欄目:編程語言
需求1:Boss需要一個員工生產100個杯子,Boss一直等待員工生產完成之后方可
import threading
import logging
import time

logging.basicConfig(level=logging.INFO)

def worker(event:threading.Event, count=10):
    logging.info("I'm working for U.")
    cups = []
    while True:
        logging.info('make 1')
        time.sleep(0.5)
        cups.append(1)
        if len(cups) >= count:
            event.set()
            break
    logging.info('I finished my job. cups={}'.format(cups))

def boss(event:threading.Event):
    logging.info("I'm boss, waiting for U.")
    event.wait()
    logging.info("Good Job")

Event = threading.Event()
w = threading.Thread(target=worker, args=(Event, 100))
b = threading.Thread(target=boss, args=(Event, ))
w.start()
b.start()
需求2:使用threading Event實現類似Timer延遲執行的線程
思路:需要有 start和 cancel的功能(使用 Event  wait(),set(), 方法)
代碼實現:
import threading
import datetime
import logging

logging.basicConfig(level=logging.INFO)

def add(x:int, y:int):
    logging.info(x + y)

class Timer(object):
    def __init__(self, interval, fn, *args, **kwargs):
        self.interval = interval
        self.fn = fn
        self.args = args
        self.kwargs = kwargs
        self.event = threading.Event()

    def start(self):
        threading.Thread(target=self.__run).start()

    def cancel(self):
        self.event.set()

    def __run(self):
        start = datetime.datetime.now()
        logging.info('Waiting')

        self.event.wait(self.interval)
        if not self.event.is_set():
        # 上面兩行可以直接改寫成 if not self.event.wait(self.interval):
            self.fn(*self.args, **self.kwargs)
        delta = (datetime.datetime.now() - start).total_seconds()
        logging.info('finished {}'.format(delta))
        self.event.set()

t = Timer(10, add, 4, 50)
t.start()
e = threading.Event()
e.wait(4)
t.cancel()

print("主線程完成")
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

社旗县| 漳州市| 垦利县| 平定县| 黑河市| 安多县| 清丰县| 开阳县| 嘉兴市| 揭东县| 福海县| 汝城县| 平山县| 东阿县| 玛曲县| 汉寿县| 镇雄县| 库车县| 西峡县| 内乡县| 克拉玛依市| 宜兴市| 石嘴山市| 四子王旗| 宁津县| 胶州市| 恩施市| 甘孜县| 百色市| 西平县| 明光市| 巴马| 溆浦县| 合肥市| 偏关县| 澎湖县| 成武县| 曲靖市| 阳山县| 汤阴县| 堆龙德庆县|