我是Python Threading,Threading的新手,我从未使用它。这就是我如何使用它。
我有一个类Source
,我希望它的方法evaluate
在一个线程中执行。 evaluate
方法调用在类外定义的效用函数increment
,该函数递增全局变量。应在关键部分中执行增量全局变量。此外,经过一些处理后,我需要暂停线程几秒钟。这就是我实现它的方式:
import threading
caseGT = threading.Lock()
GT = 0
def increment():
with caseGT:
GT = GT + 1
class Source:
def evaluate(self):
for (someCondition):
...
...
increment()
...
...
time.sleep(2)
我是如何调用方法评估的:
s = Source(....)
Thread(s.evaluate()).start()
我使用testdata获得了有效的结果。但我的问题是:
我想知道当许多线程同时工作时它是否能够正常工作?
此外,在这种情况下是否有更好的方法来编写使用线程?
答案 0 :(得分:0)
我喜欢使用线程的方法是使用iterable来启动线程。
workers = []
for item in some_list:
worker = Thread(target=some_func, args=(item,))
workers.append(worker)
worker.start()
for worker in workers:
worker.join()
所以我想在你的上下文中你想要在Source
中定义一个方法,它允许你传递一个iterable,然后使用来自该iterable的项作为参数启动线程。在您的上下文中只有一个参数转到evaluate
方法,您的实现很好。但我认为,针对同一方法扩展到多个线程可能是这种用法的问题。