gpt4 book ai didi

python - 为什么这会发送这么多变量?

转载 作者:太空宇宙 更新时间:2023-11-04 09:18:08 25 4
gpt4 key购买 nike

我创建了一个函数timeout_func,它将正常运行另一个函数并返回它的输出,但是如果该函数超过“secs”,它将返回一个字符串“failed” '.基本上,这是一种使可以无限运行的函数超时的解决方法。 (Windows 上的 Python 2.7)进程即:fd = os.open('/dev/ttyS0', os.O_RDWR)

无论如何,我的 timeout_func 是从我在这里收到的帮助中得到启发的: kill a function after a certain time in windows

我的代码的问题是,出于某种原因,do_this 函数接收 14 个变量而不是一个。通过双击脚本或从 python.exe 运行它时,我收到错误消息。从 IDLE 中你不会得到任何异常错误.... exception error message

但是,如果我将其更改为:

def do_this(bob, jim):
return bob, jim

它工作得很好......

这是怎么回事?它不喜欢 1 变量函数...?

import multiprocessing
import Queue


def wrapper(queue, func, func_args_tuple):
result = func(*func_args_tuple)
queue.put(result)
queue.close()

def timeout_func(secs, func, func_args_tuple):
queue = multiprocessing.Queue(1) # Maximum size is 1
proc = multiprocessing.Process( target=wrapper, args=(queue, func, func_args_tuple) )
proc.start()

# Wait for TIMEOUT seconds
try:
result = queue.get(True, secs)
except Queue.Empty:
# Deal with lack of data somehow
result = 'FAILED'
print func_args_tuple
finally:
proc.terminate()

return result


def do_this(bob):
return bob

if __name__ == "__main__":
print timeout_func( 10, do_this, ('i was returned') )
x = raw_input('done')

最佳答案

('i was returned') 不是元组。它计算为一个字符串,就像 (3+2) 计算为一个整数一样..

调用 do_this(*('i was returned')) 将序列 'i was returned' 的每个字母作为单独的参数传递 - 相当于:

do_this('i', ' ', 'w', 'a', 's', ' ', 'r', 'e', 't', 'u', 'r', 'n', 'e', 'd')

使用 ('i was returned',) 来强制它成为一个元组(由于尾随逗号)。

关于python - 为什么这会发送这么多变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6079414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com