ruby 进行双进程或多进程,并且设置时间
来源:互联网 发布:怎么用淘宝卖东西 编辑:程序博客网 时间:2024/06/07 04:43
在ruby的编程中,因为在进行编写时需要进行时间的限定,双进程或者多进程的运行,就要控制整体的代码编写
搭建rpc服务代码:
require 'nokogiri'require 'xmlrpc/server'class MyHandler def func1 i=0 while i<=2 puts i puts "func1 at: #{Time.now}" sleep(2) i=i+1 end end def func2 j=0 while j<=2 puts j puts "func2 at: #{Time.now}" sleep(1) j=j+1 end end def sumAndDifference(a, b) puts @good="oooo" puts b=a*b #{ "sum" => a + b, "difference" => a - b ,"@good" =>@good} return (b.to_s+"<##>"+a.to_s+"<##>"+good("1314")) end def sumAndDifference1(a, b) puts "Started At #{Time.now}" name="" t1=Thread.new{func1()} t2=Thread.new{func2()} t3=Thread.new{name=sumAndDifference(a,b)} t1.join t2.join t3.join puts "End at #{Time.now}" puts "name="+name.to_s
return name endends = XMLRPC::Server.new(1212)s.add_handler("sample", MyHandler.new)trap("INT") { s.shutdown }s.serve
进行代码的调用
require 'xmlrpc/client'server = XMLRPC::Client.new2("http://127.0.0.1:1212/")puts server.call("sample.sumAndDifference1",5,3).inspect
rpc运行结果:
[2014-08-08 09:16:28] INFO WEBrick 1.3.1[2014-08-08 09:16:28] INFO ruby 1.9.3 (2013-02-22) [i386-mingw32][2014-08-08 09:16:28] INFO WEBrick::HTTPServer#start: pid=3968 port=1215Started At 2014-08-08 09:16:30 +080000oooofunc1 at: 2014-08-08 09:16:30 +0800func2 at: 2014-08-08 09:16:30 +0800151func2 at: 2014-08-08 09:16:31 +080012func1 at: 2014-08-08 09:16:32 +0800func2 at: 2014-08-08 09:16:32 +08002func1 at: 2014-08-08 09:16:34 +0800End at 2014-08-08 09:16:36 +0800name=15<##>5<##>1314_____good
调用的的运行结果:
"15<##>5<##>1314_____good"
在进行数据的掉用是是进行三个进程同时运行,在运行时会出现三个进程同时运行,但是时间是按照最晚的也就是最长的进行,如需要进行时间的限制代码为
t2=Thread.new{name=sumAndDifference(func1()} #调用方法
strnThread=t2.join(5) #进行时间的添加,单位为s
这样当时间超过5s后没有返回值则进行下一代码的运行,但还是会出现问题,就是子程序时间超时后,主程序进行下一阶段,但是子程序继续进行,直到运行完毕。为了避免子程序进行继续运行在java中可以将t2.setDaemon()的值设计为true,代码t2.setDaemon(true),但是在ruby中没有该类,这进行kill方式进行去除。(当然需要进行有该子程序所以要进行判断)代码为 t2.kill if strnThread!=nil
O(∩_∩)O
0 0
- ruby 进行双进程或多进程,并且设置时间
- Ruby 进程
- 进程的优先级设置与获取,进程时间
- 进程的优先级设置与获取,进程时间
- 父进程利用fork()函数创建子进程并且利用shared_memory进行通信的实例
- 设置COOKIE保留时间为浏览器进程
- Ruby多进程并行抓取网页
- Ruby多进程并行抓取网页
- 进程时间
- ruby进行rpc服务的建立,并且设置端口号(XMLRPC 及 ruby的xmlrpc如何使用)
- 枚举进程ID并且获得进程路径
- 进程调度和进程时间
- 界面与逻辑--多进程或单进程
- Firefox关闭多进程或减少进程数
- linux进程通信:使用posix消息队列mq进行线程或进程间的通信
- ruby的线程和进程
- Ruby 中进程与线程
- android 使用Service进行双进程守护,防止进程被杀
- 0X7FFFFFFF,0X80000000
- hdu 2147 kiki game
- apache配置https协议
- 【VBA研究】VBA编程产生不重复随机数
- UniversalImageLoader——异步加载图片
- ruby 进行双进程或多进程,并且设置时间
- Surrounded Regions
- SPP.NET MVC的Action和Result、异常过滤器以及过滤器优先级、多重过滤器
- 【整理】byte[], String 转换
- 个人知识管理工具及相关经验技巧
- ora-00064
- Eclipse中右键项目没有Project Facets的解决方法
- W3C CSS Standard
- MySql导出、导入数据库