加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python扭曲线程

发布时间:2020-12-20 12:37:11 所属栏目:Python 来源:网络整理
导读:您好,请告诉我如何使用线程池在不同的线程中使用不同的功能 扭曲……说 我有一个id列表x = [1,2,3,4]其中1,…等是id(我从数据库得到,每个都包含一些磁盘中的python脚本). 我想做的是 在列表上扫描x遍历并在不同的线程中运行每个脚本,直到它们完成 Thanx Cald
您好,请告诉我如何使用线程池在不同的线程中使用不同的功能
扭曲……说

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

我想做的是

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

Thanx Calderone,你的代码对我帮助很大.

我很少有人怀疑我可以通过这种方式调整线程池大小.

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

说所有30个可用线程都忙碌列表中仍有一些ID(字典或元组)
1 – 在这种情况下,所有ID都将被遍历?我的意思是一旦线程是免费的下一个工具(id)
将被分配给释放的线程?
2 – 在某些情况下,在第二个工具和工具之前必须执行一个工具.另一个工具将使用一个工具输出,如何在扭曲的线程中管理它. 3

解决方法

Twisted中的线程主要通过twisted.internet.threads.deferToThread使用.或者,有一个更灵活的新界面twisted.internet.threads.deferToThreadPool.无论哪种方式,答案大致相同.迭代您的数据并使用其中一个函数将其分派给一个线程.你可以从任何一个延迟回来,它会告诉你什么是结果,什么时候可用.

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,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中线程的更多信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读