python threading.Thread 报错(0, '')
时间: 2024-06-14 13:03:57 浏览: 141
根据引用[1]中的描述,你在使用`threading.Thread()`函数时出现了错误。错误的原因是你在传递参数时漏掉了一个逗号。在`args`参数中,如果只有一个参数,需要在参数后面加上逗号,以表示这是一个元组。正确的写法应该是`args=(self.RecordText,)`。
根据引用中的描述,你想要编写一个程序,在执行过程中用户可以随时停止执行,而不会停止主程序。你尝试使用`threading.Thread`来实现这个功能,但在IDLE(Python 3.3)中运行代码时出现了报错`(0, '')`。根据提供的引用内容,无法确定具体的报错原因。可能是由于代码中的其他问题导致的。如果你能提供更多的代码或错误信息,我可以帮助你找到问题所在并给出解决方案。
相关问题
编辑器里threading.Thread(target=run).start()报错
如果你使用的是 Python 3.x 版本,那么需要将 `threading.Thread(target=run).start()` 修改为 `threading.Thread(target=run, daemon=True).start()`,即添加一个 `daemon=True` 参数。这是因为在 Python 3.x 版本中,主线程结束后,子线程不会自动结束,需要手动将子线程设置为守护线程(daemon thread),使得主线程结束时子线程也随之结束。
如果你使用的是 Python 2.x 版本,可以将 `threading.Thread(target=run).start()` 修改为 `threading.Thread(target=run)`, `thread.setDaemon(True)` 和 `thread.start()` 三行代码来实现将子线程设置为守护线程的功能。
修改后的代码如下所示:
```python
import websocket
import time
import threading
def on_message(ws, message):
print(message)
def on_error(ws, error):
print(error)
def on_close(ws):
print("### closed ###")
def on_open(ws):
def run(*args):
while True:
time.sleep(10)
ws.send("ping")
threading.Thread(target=run, daemon=True).start()
if __name__ == "__main__":
websocket.enableTrace(True)
ws = websocket.WebSocketApp("ws://echo.websocket.org/",
on_message=on_message,
on_error=on_error,
on_close=on_close)
ws.on_open = on_open
ws.run_forever()
```
在这个修改后的代码中,我们将 `threading.Thread(target=run).start()` 修改为 `threading.Thread(target=run, daemon=True).start()`,就可以解决这个报错问题。
下面这段代码报错(import threading import pandas as pd import numpy as np def thread1_func():#####接受挠度数据 global a a=5 event.wait() # 等待线程1完成 def thread2_func():#####接受应变数据 global c c=5 event.wait() # 等待线程1完成 thread1 = threading.Thread(target=thread1_func) thread2 = threading.Thread(target=thread2_func) thread1.start() thread2.start() thread1.join() thread2.join() b=a+c)
这段代码报错的原因是变量 `event` 未定义。在代码中使用 `event.wait()` 时,需要先定义并初始化 `event` 变量。可以使用 `threading.Event()` 来创建一个新的 `event` 对象,然后在 `thread1_func()` 和 `thread2_func()` 中使用该对象。以下是修改后的代码:
```python
import threading
import pandas as pd
import numpy as np
event = threading.Event()
def thread1_func():
global a
a = 5
event.wait() # 等待线程1完成
def thread2_func():
global c
c = 5
event.wait() # 等待线程1完成
thread1 = threading.Thread(target=thread1_func)
thread2 = threading.Thread(target=thread2_func)
thread1.start()
thread2.start()
thread1.join()
thread2.join()
b = a + c
```
这样修改后,代码应该能够正常运行。
阅读全文