gpt4 book ai didi

python 扭曲线程

转载 作者:太空宇宙 更新时间:2023-11-03 12:22:32 25 4
gpt4 key购买 nike

嗨,你能告诉我如何使用线程池在不同的线程中使用不同的函数吗在扭曲的...说

我有一个 ids 列表 x=[1,2,3,4] 其中 1,2,...etc 是 ids(我从数据库中得到,每个都包含 python 脚本在某些磁盘中)。

我想做的是

扫描列表中的 x 遍历并在不同线程中运行每个脚本,直到它们完成


谢谢 Calderone,您的代码对我帮助很大。

我毫不怀疑我可以通过这种方式调整线程池的大小。

from twisted.internet import reactor
reactor.suggestThreadPoolSize(30)

假设所有 30 个可用线程都忙并且列表(字典或元组)中仍有一些 ID1-这种情况会遍历所有id吗?我的意思是一旦线程空闲下一个工具(id)将分配给释放的线程?2-在某些情况下,一个工具必须在第二个工具之前执行,并且一个工具的输出将被另一个工具使用,如何在双线程中进行管理。 3

最佳答案

Twisted 中的线程主要通过 twisted.internet.threads.deferToThread 使用。或者,有一个稍微更灵活的新接口(interface) twisted.internet.threads.deferToThreadPool。不管怎样,答案大致相同。迭代您的数据并使用其中一个函数将其分派(dispatch)给线程。您从其中任何一个返回一个 Deferred,它会告诉您结果是什么,何时可用。

from twisted.internet.threads import deferToThread
from twisted.internet.defer import gatherResults
from twisted.internet import reactor

def double(n):
return n * 2

data = [1, 2, 3, 4]

results = []
for datum in data:
results.append(deferToThread(double, datum))

d = gatherResults(results)
def displayResults(results):
print 'Doubled data:', results
d.addCallback(displayResults)
d.addCallback(lambda ignored: reactor.stop())

reactor.run()

您可以在 threading howto 中阅读有关 Twisted 中线程的更多信息.

关于 python 扭曲线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3243431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com