【问题标题】:Log value of variable every second in PythonPython中每秒记录变量的值
【发布时间】:2023-04-04 19:21:01
【问题描述】:

我需要每隔一秒或几秒打印一个变量的值,而“同时”这个变量正在被修改。所以我会在我的主函数中修改这个变量,我想要每秒打印它的值。比如:

'''This is my main program'''

for i in range(very large number):

'''do something which modifies the value of 'var' '''

代码中的其他地方:

'''Every second'''

print var

我查看了this,但我不确定它是否是我正在寻找的,或者我应该如何使用它。

我需要的很简单,没有其他线程,我不关心同步任何东西,或者在主函数中打印值时。

【问题讨论】:

  • 如果你没有并行化工作的线程(修改 var 并打印它的值)为什么你需要等待 1 秒才能打印?
  • 如果不使用多线程或多处理或异步(如 gevent 或 tornado)方法,您将无法执行此类操作。

标签: python multithreading logging


【解决方案1】:

您可以使用线程每秒打印 var。

试试这个例子:

导入线程

var = 5


def printit():
  global var
  threading.Timer(5.0, printit).start()
  print "Hello, World!", var

printit()

import time

for i in range(1000000):
    time.sleep(2)
    var = i

【讨论】:

  • 两个答案都有效,但这是最简单的。我只需要添加一个“完成”标志,这样当另一部分完成时,这个函数就会停止。否则它会一直运行!
【解决方案2】:

基本上,您指出的问题/答案就是您所需要的:

import threading import time

interesting = 0

class MonitorThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)

    def run(self):
        global interesting
        while(1):
            print interesting
            time.sleep(1)

MonitorThread().start()

for interesting in range(2000000):
    time.sleep(1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多