from twisted.internet import reactor
from twisted.internet import threads
from twisted.internet import defer
import time

def worker(arg):
    print 'Hello world'
     time.sleep(10)
    return 1

def run():
    print 'Starting workers'
    l = []
    for x in range(2):
        l.append(threads.deferToThread(worker,x))
    return defer.DeferredList(l)

def res(results):
    print results
    reactor.stop()

d = run()
d.addCallback(res)
reactor.run()

如何通过超时停止工人?

解决方法

除非与您合作,否则不能中断线程. time.sleep(10)不合作,所以我认为你不能打断这个工人.如果您有另一种具有多个离散阶段的工作者,或者在某些任务的循环中操作,那么您可以执行以下操作:
def worker(stop,jobs):
    for j in jobs:
        if stop:
            break
        j.do()

stop = []
d = deferToThread(worker)

# This will make the list eval to true and break out of the loop.
stop.append(None)

这也不是Twisted特定的.这就是线程在Python中的工作方式.

python – 如何为twisted defer添加超时的更多相关文章

  1. 转 Grand Central Dispatch 基础教程:Part 1/2 -swift

    第一节将解释什么是GCD并了解几个GCD的基础函数。GettingStartedGCD是libdispatch的代名词,libdispatch代表着运行iOS与OSX的多核设备上执行并行代码的官方代码库。再有一点要记住的就是在任何GCD文档中涉及到Objective-C的块代码都是可以用Swift的闭包来替换的。举个具有线性安全性的代码示例leta=["thread-safe"]。因为,这一切都是由GCD控制的。任务的开始执行的时间完全由GCD决定。它也是唯一一个用作向UIView对象发送信息或推送监听。

  2. 为什么要用GCD-Swift2.x

    为什么要用GCD-Swift2.x当今世界,多核已然普及。你并不是一定要写一个大并发的APP才需要用GCD。其次,GCD库会根据系统的cpu核心数创建最佳数量的线程。这个服务质量种类是用来表示你提交的任务的意图是什么,这样GCD可以有针对性的优化。这里需要注意一点:Objective-C的block和Swift的closure。Swift的closure和方法是同一类型的,所以你甚至可以把swift的方法名传递过去。也就是说Objective-C中的__block关键字在Swift的closure中是默认

  3. Swift - 多线程实现方式3 - Grand Central DispatchGCD

    dispatchqueue可以是并发的或串行的。dispatch_suspend后,追加到DispatchQueue中尚未执行的任务在此之后停止执行。6//创建并行队列conQueue:dispatch_queue_t=dispatch_queue_create//暂停一个队列dispatch_suspend//继续队列dispatch_resume6,dispatch_once一次执行保证dispatch_once中的代码块在应用程序里面只执行一次,无论是不是多线程。注意,我们不能(直接)取消我们已经提

  4. 用于Windows 7的spyder中的strptime的Python ImportError

    什么是导入锁,为什么一旦我尝试运行代码一次,它似乎阻止我导入datetime模块的这个方法?

  5. ubuntu16.04下twisted安装

    完成后在shell中输入python,即可显示python版本信息,再输入importtwisted,没有异常即说明安装成功。

  6. centos 7 安装scrapy遇到的问题

    pipinstallscrapy错误1:安装scrapy提示安装scrapy提示CouldnotfindaversionthatsatisfiestherequirementTwisted>=10.0.0(fromscrapy)(fromversions:)NomatchingdistributionfoundforTwisted>=10.0.0(fromscrapy)解决方法:wgethttps

  7. Java和Python中的线程

    关于Python和Java中的线程我几乎没有问题……>是否有可能为Python线程提供优先级,就像在Java中一样?>我如何在Python中杀死,停止,暂停和中断线程?>线程组–他们真正的目标是什么?>同步–在Java中我们只使用关键字synchorinized作为方法,对象……

  8. c# – .net的多线程网络UDP服务器库

    在.net土地上有类似twisted或eventmachine的东西吗?所有这些都取决于线程在收到消息后尝试做多少工作?我在抽象中寻找的是从问题中消除线程和同步的复杂性.解决方法我觉得你太复杂了.只打开1个UDP套接字,并在其上设置异步回调.对于每个传入的数据包,将其放入队列,然后再次设置回调.而已.确保在排队和出队时设置了对队列的锁定.它就这么简单,性能也会很棒.[R

  9. 多线程 – 哪些脚本语言支持多核编程?

    支持不限于单个内核的线程?

  10. Cocos2dx学习笔记36 多线程与异步加载

    为了规避此类问题的发生,Cocos2d-x在引擎中为开发者提供了异步加载的功能,我们可以向TextureCache发送一个异步加载文件的请求,TextureCache内部会帮助我们创建一个新的线程来完成耗时的加载纹理操作,而在我们的主线程中则可以继续执行其他的计算。单核设备中的多线程是并发的。

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部