如何在Python中将工作分配给一组工作线程?

2023年 8月 27日 29.7k 0

如何在Python中将工作分配给一组工作线程?

要在一堆工作线程之间分配工作,请使用并发.futures 模块,尤其是
ThreadPoolExecutor 类。

有了这个替代方案,如果您想精细控制调度算法,您可以手动编写自己的逻辑。使用队列模块创建包含作业列表的队列。 Queue 类维护一个对象列表,并具有将项目添加到队列的 .put(obj) 方法和返回项目的 .get() 方法。该类将负责必要的锁定,以确保每个作业只分发一次。

示例

以下是一个示例 -

import threading, queue, time

# The worker thread gets jobs off the queue. When the queue is empty, it
# assumes there will be no more work and exits.
def worker():
print('Running worker')
time.sleep(0.1)
while True:
try:
arg = q.get(block=False)
except queue.Empty:
print('Worker', threading.current_thread(), end=' ')
print('queue empty')
break
else:
print('Worker', threading.current_thread(), end=' ')
print('running with argument', arg)
time.sleep(0.5)

# Create a queue
q = queue.Queue()

# Start a pool of 5 workers
for i in range(5):
t = threading.Thread(target=worker, name='worker %i' % (i+1))
t.start()

# Begin adding work to the queue
for i in range(50):
q.put(i)

# Give threads time to run
print('Main thread sleeping')
time.sleep(5)

登录后复制

输出

Running worker
Running worker
Running worker
Running worker
Running worker
Main thread sleeping
Worker running with argument 0
Worker running with argument 1
Worker running with argument 2
Worker running with argument 3
Worker running with argument 4
Worker running with argument 5
Worker running with argument 6
Worker running with argument 7
Worker running with argument 8
Worker running with argument 9
Worker running with argument 10
Worker running with argument 11
Worker running with argument 12
Worker running with argument 13
Worker running with argument 14
Worker running with argument 15
Worker running with argument 16
Worker running with argument 17
Worker running with argument 18
Worker running with argument 19
Worker running with argument 20
Worker running with argument 21
Worker running with argument 22
Worker running with argument 23
Worker running with argument 24
Worker running with argument 25
Worker running with argument 26
Worker running with argument 28
Worker running with argument 29
Worker running with argument 27
Worker running with argument 30
Worker running with argument 31
Worker running with argument 32
Worker running with argument 33
Worker running with argument 34
Worker running with argument 35
Worker running with argument 36
Worker running with argument 37
Worker running with argument 38
Worker running with argument 39
Worker running with argument 40
Worker running with argument 41
Worker running with argument 42
Worker running with argument 43
Worker running with argument 44
Worker running with argument 45
Worker running with argument 46
Worker running with argument 47
Worker running with argument 48
Worker running with argument 49
Worker queue empty
Worker queue empty
Worker queue empty
Worker queue empty
Worker queue empty
(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>(worker>

登录后复制

以上就是如何在Python中将工作分配给一组工作线程?的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论