【问题标题】:How to run and stop thread randomly in python?如何在python中随机运行和停止线程?
【发布时间】:2021-07-28 06:25:24
【问题描述】:

情况如下:

我的 python 代码随机生成 TRUE 和 FALSE 条件。我希望一个线程运行,直到条件保持评估为 TRUE,并且当条件为 FALSE 时,必须停止线程。 例如对于 5 秒条件为 TRUE,对于这 5 秒,我想保持线程运行,但在 5 秒条件更改为 FALSE 后,我想立即停止该线程。现在假设 FALSE 条件为真 6 秒,然后在 6 秒后条件更改为 TRUE,然后我想再次启动线程并运行一段时间,直到条件为 TRUE 并在条件更改为时立即停止它错误。

简而言之,条件(TRUE 和 FALSE)是随机更改的,我想在一段时间内运行线程,直到条件为 TRUE 并在条件从 TRUE 更改为 FALSE 时停止。

注意:我使用了 Daemon=True 但它确实首先完成了正在运行的线程,因此主程序会暂停,直到线程完全执行。

【问题讨论】:

  • 您实际上需要帮助解决问题的哪一部分?你知道如何评估病情吗?你知道如何暂停(不是“停止”,因为这意味着它已经死了并且不能再次启动)线程吗?当您尝试编写代码来解决问题时发生了什么?或者任何代码?

标签: python python-3.x multithreading python-multithreading


【解决方案1】:

没有本地方法可以以这种方式简单地暂停和取消暂停 Python 中的线程。但是,这是模仿这种行为的好方法:

import threading
import random
import time

condition = True

def threadFunc():
    while 1:
        if condition:
            # do something useful

thread = threading.Thread(target=threadFunc)
thread.start()

while 1:
    condition = random.randint(0,1)
    print(condition)
    time.sleep(1)

condition 变量在子线程和父线程之间共享。在子线程中,“stuff”仅在条件为真时完成。在父线程中,条件每秒随机更改为真或假。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 2022-08-18
    • 2016-09-05
    • 2018-11-19
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多