在Python 2中,我使用模块thread
轻松创建新线程,执行:
thread.start_new_thread(function_name, (arguments_tuple,))
我知道我可以在Python 3中运行相同的代码,除了我必须用import thread
替换import _thread
语句。但正如Python文档中所解释的那样:
此模块提供低级原语,用于处理多个 线程(也称为轻量级进程或任务) - 多个 共享其全局数据空间的控制线程。对于 同步,简单锁(也称为互斥锁或二进制) 提供信号量。 线程模块提供了更简单的方法 在此模块之上构建的使用和更高级别的线程API 。
如何将该段代码迁移到新模块语法?
答案 0 :(得分:1)
新模块的目的地为OOP,因此threading
的示例为:
import time
from threading import Thread
def sleeper(i):
print "thread %d sleeps for 5 seconds" % i
time.sleep(5)
print "thread %d woke up" % i
for i in range(10):
t = Thread(target=sleeper, args=(i,))
t.start()
将import thread
更改为from threading import Thread
,将start_new_thread(func, (args,)
更改为Thread(target=func, args=(args,).start()
即可。