Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中变量每秒的日志值_Python_Multithreading_Logging - Fatal编程技术网

Python中变量每秒的日志值

Python中变量每秒的日志值,python,multithreading,logging,Python,Multithreading,Logging,我需要每秒钟或几秒钟打印一个变量的值,同时修改这个变量。因此,我将在我的主函数中修改这个变量,我希望每秒都能打印出它的值。比如: '''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 is my main program'''

for i in range(very large number):

'''do something which modifies the value of 'var' '''
代码中的其他地方:

'''Every second'''

print var
我看了一下,但我不确定这是否是我要找的,或者我应该如何使用它


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

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

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)

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

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)

您可以使用线程每秒打印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

您可以使用线程每秒打印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

如果没有并行化工作的线程(修改变量并打印其值),为什么需要等待1秒才能打印?如果不使用多线程、多处理或异步(如gevent或tornado)方法,则无法执行此类操作。如果没有并行化工作的线程(修改变量并打印其值)为什么需要等待1秒才能打印?如果不使用多线程、多处理或异步(如gevent或tornado)方法,就无法执行这些操作。这两个答案都有效,但这是最简单的。我只需要添加一个标志“done”,这样当其他部分完成时,这个函数就会停止。否则它将永远运行!两个答案都有效,但这是最简单的。我只需要添加一个标志“done”,这样当其他部分完成时,这个函数就会停止。否则它将永远运行!