【问题标题】:Timeit module is rejecting print("\n") statementsTimeit 模块拒绝 print("\n") 语句
【发布时间】:2021-03-01 17:21:41
【问题描述】:

我正在尝试运行以下代码示例

from timeit import timeit as t 

setup = '''
import time
from multiprocessing import Pool

def square(x):
    square = x * x
    time.sleep(1)
    return square
'''
case01 = '''
def caso01(): 

    print("\nPART 1")
    
    starttime = time.time()
    pool = Pool(4)
    pool.map(square, range(0, 5))
    pool.close()
    endtime1 = time.time()
    print(f"Time taken {endtime1-starttime} seconds")
    return None
'''
def main():
    print( t(setup=setup,stmt=case01,number=100) )
    return None
main()

我总是遇到同样的错误:

File "/usr/lib/python3.8/timeit.py", line 233, in timeit
  return Timer(stmt, setup, timer, globals).timeit(number)
File "/usr/lib/python3.8/timeit.py", line 122, in __init__
  compile(stmtprefix + stmt, dummy_src_name, "exec")
File "<timeit-src>", line 16
  print("

我发现从打印语句中删除“\n”问题就消失了。 Timeit 模块根本不能使用“\n”吗?我错过了什么?

谢谢

PS:在 linux 机器上使用 Python 3

【问题讨论】:

  • 添加r'''前缀或使用\\n
  • 文字行 print("\nPART 1") 转换为 两个 源代码行 print("PART 1")

标签: python module eol timeit


【解决方案1】:

您需要添加一个前导反斜杠 (\) 来转义 \n,因为它正在运行时被解码。

case01 = '''
def caso01(): 

    print("\\nPART 1")
    
    starttime = time.time()
    pool = Pool(4)
    pool.map(square, range(0, 5))
    pool.close()
    endtime1 = time.time()
    print(f"Time taken {endtime1-starttime} seconds")
    return None
'''

【讨论】:

    猜你喜欢
    • 2016-12-29
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 2014-11-15
    • 2018-05-11
    相关资源
    最近更新 更多