- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试学习 Python 3 上的线程。我做了一个示例代码:
import time
import threading
def myfunction(string,sleeptime,lock,*args):
count = 0
while count < 2:
#entering critical section
lock.acquire()
print(string, " Now sleeping after Lock acquired for ",sleeptime)
time.sleep(sleeptime)
print(string, " Now releasing lock and sleeping again.\n",time.ctime(time.time()))
lock.release()
#exiting critical section
time.sleep(sleeptime)
count+=1
#threading.Thread.daemon=True
if __name__!="__main__":
lock = threading.Lock()
try:
threading.Thread.start(myfunction("Thread Nº 1",2,lock))
threading.Thread.start(myfunction("Thread Nº 2",2,lock))
except:
raise
while 1:pass
它部分起作用。当它到达 while<2 loop
,它返回错误:
Traceback (most recent call last):
File "python", line 22, in <module>
AttributeError: 'NoneType' object has no attribute '_initialized'
并且从不执行第二个线程调用。
我该怎么做才能纠正这个问题?
谢谢大家!
最佳答案
您正在使用 Thread
完全错误。首先,您没有调用 Thread
构造函数(即你的代码必须有 threading.Thread(<something>)
来创建新的 Thread
实例)。其次,您正在调用 myfunction
在 main 线程中使用参数,而不是在新线程中。第三,该函数的返回值(隐式 None
)作为隐式 self
传递。未绑定(bind)的参数 Thread.start
方法!
正确的做法是
t1 = threading.Thread(target=myfunction, args=("Thread Nº 1", 2, lock))
t1.start()
同样适用于 t2
.此外,如果您这样做,您将保留对 Thread
的引用。对象,您可以替换 while 1: pass
与
t1.join()
t2.join()
print("Both threads exited, exiting.")
或者同样地:
for t in [t1, t2]:
t.join()
print("Both threads exited, exiting.")
经过这些修改,程序将输出
Thread Nº 1 Now sleeping after Lock acquired for 2
Thread Nº 1 Now releasing lock and sleeping again.
Mon Jun 26 17:42:32 2017
Thread Nº 2 Now sleeping after Lock acquired for 2
Thread Nº 2 Now releasing lock and sleeping again.
Mon Jun 26 17:42:34 2017
Thread Nº 1 Now sleeping after Lock acquired for 2
Thread Nº 1 Now releasing lock and sleeping again.
Mon Jun 26 17:42:36 2017
Thread Nº 2 Now sleeping after Lock acquired for 2
Thread Nº 2 Now releasing lock and sleeping again.
Mon Jun 26 17:42:38 2017
Both threads exited, exiting.
关于python - 线程错误 : AttributeError: 'NoneType' object has no attribute '_initialized' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44762167/
这是我的代码。 var express = require("express"); var router = express.Router(); var mangojs = require("mang
知道为什么我在运行下面的代码时会收到以下错误: Traceback (most recent call last): File "C:\pytests\mthread1.py", line 25,
我正在尝试学习 Python 3 上的线程。我做了一个示例代码: import time import threading def myfunction(string,sleeptime,lock,*
下面的代码不会在我的 ASP.NET 页面中呈现,并且单击按钮后我的页面会发回。 Sys dot WebForms dot PageRequestManager dot _initialize('Sc
我在网站上使用 ASP.NET 2.0 Ajax 扩展。与往常一样,本地一切正常,但远程网站不使用 ajax 调用。我的本地服务器安装了 ASP.NET Ajax 扩展,但远程服务器没有。我知道我应该
我是一名优秀的程序员,十分优秀!