1 回答
TA贡献1818条经验 获得超11个赞
当然,您可以使用线程来同时运行多个进程。
你必须创建一个这样的类:
from threading import Thread
class Work(Thread):
def __init__(self):
Thread.__init__(self)
self.lock = threading.Lock()
def run(self): # This function launch the thread
(your code)
如果你想同时运行多个线程:
def foo():
i = 0
list = []
while i < 10:
list.append(Work())
list[i].start() # Start call run() method of the class above.
i += 1
如果您想在多个线程中使用相同的变量,请小心。您必须锁定此变量,以便它们不会同时全部到达此变量。像这样 :
lock = threading.Lock()
lock.acquire()
try:
yourVariable += 1 # When you call lock.acquire() without arguments, block all variables until the lock is unlocked (lock.release()).
finally:
lock.release()
在主线程中,您可以调用队列上的 join() 以等待所有待处理的任务完成。
这种方法的好处是您不会创建和销毁线程,这很昂贵。工作线程将持续运行,但在队列中没有任务时将处于休眠状态,使用零 CPU 时间。
我希望它会帮助你。
添加回答
举报