如何在python中暂停线程一段时间?

问题描述 投票:0回答:1

我正在构建一个软件,在该软件中我不想在某个时间或某个事件中暂停/停止线程这是一些基本的代码,可以帮助您更好地了解您]

self.staff_list_thread = Thread(target = self.get_staff_list, kwargs = {"master": self.frame_staff_list}, daemon = True)
self.staff_list_thread.start()

def get_staff_list(self, master, *args, **kwargs):
    def add_staff_button_callback():
        self.get_add_staff(self.frame_staff_add)

    def detail_edit_staff_button_callback(email):
        if email is not None:
            self.get_detail_edit_staff(self.frame_staff_detail, email)

    row = 1
    self.staff_introduction = get_a_label(master, text="This is staff area", row=0, column=0, padx=(10, 10), pady=(10, 10))
    self.staff_introduction.config(style="Title.TLabel")
    self.add_staff_button = get_a_button(master, text="Add New Staff", row=0, column=1, padx=(10, 10), pady=(10, 10), ipadx=7, ipady=4)
    self.add_staff_button.config(command=add_staff_button_callback)

    staffs = self.get_staff_queryset()
    if staffs is not None:
        for staff in staffs:
                self.staff_data_button = get_a_button(master, text='{} as {}'.format(staff[1], staff[5]), row=row, column=0, padx=(0, 0), pady=(5, 5), ipadx=10, ipady=10, relief=FLAT, use_ttk=False)
                self.staff_data_button.config(command = lambda email=staff[2]: detail_edit_staff_button_callback(email))
                row = row + 1

在函数结束时,我将不希望暂停线程,并且在添加新人员时,我将不使用现有数据重新计数或重置列表,因此我需要再次运行线程这是按钮调用功能[]

def get_add_staff(self, master, *args, **kwargs):
    self.add_staff_current = True
    if self.have_one_detail:
        # self.destroy_child(self.frame_staff_detail)
        self.have_one_detail = False
        self.frame_staff_detail.destroy()
        self.frame_staff_detail         = get_a_frame(self.staff_add_update_panedwindow, column=1, sticky="wn")

    FullName, Email, Phone, Joining, Designation, Active = self.get_staff_variable()

    def cancel_new_staff_button_callback():
        # self.destroy_child(master)
        self.frame_staff_detail.destroy()
        self.frame_staff_detail         = get_a_frame(self.staff_add_update_panedwindow, column=1, sticky="wn")
        self.add_staff_current = False

    def staff_button_callback():
        data = {
            'full_name': FullName.get(),
            'email': Email.get(),
            'phone': float(Phone.get()),
            'joining': Joining.get(),
            'designation': Designation.get(),
            'responsibility': self.add_staff_responsibility_data.get(1.0, 'end'),
            'about': self.add_staff_about_data.get(1.0, 'end'),
            'active': Active.get()
        }
        execute = self.execute_staff_data(data=data)
        if execute is True:
            # self.staff_list_thread.start()
            cancel_new_staff_button_callback()

    self.get_staff_labels(master)

    self.add_staff_fullname_data                = get_a_entry(master, textvariable=FullName, width=36, row=1, column=1)
    self.add_staff_email_data                   = get_a_entry(master, textvariable=Email, row=2, width=36, column=1)
    self.add_staff_phone_data                   = get_a_entry(master, textvariable=Phone, row=3, column=1)
    self.add_staff_joining_data                 = get_a_entry(master, textvariable=Joining, row=4, column=1)
    self.add_staff_designation_data             = get_a_entry(master, textvariable=Designation, width=36, row=5, column=1)
    self.add_staff_responsibility_data          = get_a_text(master, width=36, height=4, row=6, column=1)
    self.add_staff_about_data                   = get_a_text(master, width=36, height=10, row=7, column=1)
    self.add_staff_active_data                  = get_a_radio(master, text="Active", variable=Active, value=1, row=8, column=1)
    self.add_staff_inactive_data                = get_a_radio(master, text="Inactive", variable=Active, value=0, row=9, column=1)

    self.save_new_staff_button                  = get_a_button(master, text="Add Staff", row=10, padx=(20, 20), pady=(30, 30))
    self.cancel_new_staff_button                = get_a_button(master, text="Cancel", row=10, column=1, padx=(20, 20), pady=(30, 30))
    self.save_new_staff_button.config(command=staff_button_callback)
    self.cancel_new_staff_button.config(command=cancel_new_staff_button_callback)

我正在构建一个我不想暂停/停止线程一段时间或某个事件的软件,这里有一些必要的代码可以更好地帮助您了解self.staff_list_thread = Thread(target = self ....] >

python-3.x button thread-safety python-multithreading ttk
1个回答
0
投票

为了简单回答标题问题,您可以使用time.sleep()暂停主题>

import time
time.sleep(30) #pause for 30 seconds

通过简单的实现,您可以在循环上运行此程序,以检查是否应调用该函数。请注意,这将锁定整个暂停的线程。

© www.soinside.com 2019 - 2024. All rights reserved.