在计时器在python中用完之前完成一项任务

时间:2017-05-14 22:19:48

标签: python multithreading timer

我有2个功能,一个是倒数计时器,另一个基本上是我想在这个时间段内执行的功能。

我倒数计时器的代码如下:

def countdown(count):
   while count > 0:
       print(count)
       count -= 1
       time.sleep(1)
   return

我想在计时器用完之前完成执行的其他功能如下:

def solution(imat, painter):
nrows, ncols = imat.shape # gets the total number of rows and columns from a text file
for r in range(nrows): 
    for c in range(ncols):
        if imat[r,c] == 1: # checks if there is a 1 in any index (row and column) in the text file
            painter.paint('square',r, c, 1) # square is the method it uses to print, i.e  in blocks, and 1 is basically the size of the block that prints 

我现在的问题是,我可以在计时器用完之前完全运行解决方案功能吗?

我尝试在解决方案功能中使用t1 = threading.Thread(target=countdown , args =(imat, painter)),但它无效。 最大值计数可以设置为20。

painter.paint(...)函数运行160个命令,这意味着文本文件中有160个1,有一种方法可以减少函数运行所需的命令数量吗?

可以使用线程减少命令数吗?

所有帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:-1)

看起来彼得伍德的资金很可能在于您的目标是倒计时功能,但是在线程代码中传递解决方案函数的参数。

但是,如果您只想为代码计时,this指南中有一些关于如何执行此操作的非常好的内容。我个人喜欢line_profiler,因为它为您提供了每条线的执行时间。