包装函数以在单独的线程/进程中运行。

remoteit的Python项目详细描述


远程IT

具有concurrent.futures类型接口的超级基本多处理/多线程处理。在

安装

pip install remoteit

使用

^{pr2}$

描述和动机

这与concurrent.futures的区别在于:

  • 这是一个单一的工作进程
  • 它每次都会分叉一个新的过程。在

我之所以这样做而不只是使用concurrent.futures,是因为当我试图提交一个引用队列对象的作业时,遇到了一个错误,即某些对象如何只能通过继承共享。在

所以我又回到了使用multiprocessing.Process,但是传递和引发远程异常是一件非常痛苦的事情,也是我自己解决和解决的问题。所以我决定这将是我最后一次思考如何实现这种信息传递。在

这个包基本上是multiprocessing.Processthreading.Thread的一个薄包装,它将返回结果并从远程工作进程引发任何异常。超级简单!在

注意事项和注意事项

Future对象只能由单个进程使用。
  • 目前,我处理多个并发的futures+结果,方法是生成一个随机的id,并在结果旁边返回id。在
  • 然后,如果另一个future得到了一个与它的result_id不匹配的结果,它将把它放入一个results dictionary中,由其他futures检查它们的result_id。在
  • 但问题是,进程之间没有共享字典,因此,如果您在两个不同的进程中从结果队列中读取项,则会导致死锁,因为一个进程可能会从队列中弹出另一个进程结果,而将来将永远看不到它的结果。在
  • 如果有人对如何在不增加太多开销的情况下解决这个问题有任何想法,请发布一个问题!!在

缺少接口

  • fut.cancel()-正在取消任务。我们不处理取消的结果
  • fut.result(timeout)-我们没有结果超时atm。在
  • fut.add_done_callback()-我们没有运行结果的监视线程。现在最好打电话给future.result()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java InputStream对象在声明后关闭   java未定义名为“transactionManager”的bean重命名transactionManager   java“jar”命令何时会拒绝将类添加到java中。jar文件?   java JPA标准依赖WHERE子句   安卓中从SD卡读取文本文件时出现java错误   java直接启用类似位置的权限   使用@WebMvcTest和Mockito-BDDMockito对SpringBoot-RestController进行java测试   java JSESSIONID存储在哪里?   java jtextarea鼠标事件覆盖容器鼠标事件   java DRL无法解析动态加载的类   java是从一个方法返回多个对象的最简单方法   java自定义按钮/编辑框是否不可见?   java GUI如何在保存用户输入的同时在面板或框架之间切换   swing Java自定义JSlider不会更新   GridBagLayout中的java超过1个JPanel   java从ProjectReactor中的flux中采样除第一个元素外的所有元素   Java泛型和泛型类型   Java代码生成宽指令的jvm