Task多线程进行多进程
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks; namespace ConsoleApp
{
class Program
{
[DllImport("Kernel32", EntryPoint = "GetCurrentThreadId", ExactSpelling = true)]
public static extern Int32 GetCurrentWin32ThreadID();
static void Main(string[] args)
{
int maxConnectionCount = 1;
string[] urlarr = File.ReadAllLines(@"D:\sitecheckurllist.txt");
int num = urlarr.Length;
var SiteCheck = new SiteCheck();
SiteCheck.Run(urlarr, num, maxConnectionCount);
} } public class SiteCheck
{ Random rand = new Random();
Queue<int> queueUrl = new Queue<int>();
int EachCount = 1;
int Cur = 0; int LoadData(int Max)
{
if (Cur >= Max)
{
//when Cur>=Max,return
Console.WriteLine("Reached max value!");
return -1;
}
Console.WriteLine("Loading data...");
for (int i = Cur; i < EachCount + Cur; i++)
{
Thread.Sleep(10);
Console.Write(i + " ");
//insert data into Queue<Book>
queueUrl.Enqueue(i);
}
Console.WriteLine("");
Cur += EachCount;
Console.WriteLine("Data loaded successful,{0}...", queueUrl.Count);
return Cur;
} public void Run(string[] urlarr, int Max, int maxConnectionCount)
{
int cur = LoadData(Max); Process process = new Process();
Console.WriteLine("Tasks have started...");
do
{ if (cur == -1)
{
break;
}
else
{
cur = queueUrl.Count;
}
Task[] tasks = new Task[maxConnectionCount];
Stopwatch sw = new Stopwatch();
sw.Start();
LogHelper.WriteLog(typeof(Program), string.Format("StartTaskTime taskCount{0}:", maxConnectionCount) + DateTime.Now.ToString());
for (int i = 0; i < maxConnectionCount; i++)
{
process = new Process(); tasks[i] = Task.Factory.StartNew(()
=>
{
process.StartInfo.FileName = string.Format(@"D:\siteCheck\publish{0}\lphash.exe", i); //准备启动lphash
process.StartInfo.Arguments = urlarr[cur - maxConnectionCount + i];
process.Start();
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
});
Thread.Sleep(500); }
process.WaitForExit();
sw.Stop();
LogHelper.WriteLog(typeof(Program), string.Format("endTaskTime taskCount{0}:", maxConnectionCount) + DateTime.Now.ToString()); cur =LoadData(Max); } while (queueUrl.Count > 0); //when Cur>=Max,break the while loop
Console.WriteLine("All tasks have completed."); Console.ReadKey();
}
}
}
Task多线程进行多进程的更多相关文章
- 深入解析PHP中的(伪)多线程与多进程
本篇文章是对PHP中的(伪)多线程与多进程进行了详细的分析介绍,需要的朋友参考下 (伪)多线程:借助外力利用WEB服务器本身的多线程来处理,从WEB服务器多次调用我们需要实现多线程的程序.QUOTE: ...
- 多线程、多进程、协程、缓存(memcache、redis)
本节内容: 线程: a:基本的使用: 创建线程: 1:方法 import threading def f1(x): print(x) if __name__=='__main__': t=thread ...
- Python 多线程、多进程 (二)之 多线程、同步、通信
Python 多线程.多进程 (一)之 源码执行流程.GIL Python 多线程.多进程 (二)之 多线程.同步.通信 Python 多线程.多进程 (三)之 线程进程对比.多线程 一.python ...
- gj11 多线程、多进程和线程池编程
11.1 python中的GIL # coding=utf-8 # gil global interpreter lock (cpython) # python中一个线程对应于c语言中的一个线程 # ...
- Python多线程、多进程和协程的实例讲解
线程.进程和协程是什么 线程.进程和协程的详细概念解释和原理剖析不是本文的重点,本文重点讲述在Python中怎样实际使用这三种东西 参考: 进程.线程.协程之概念理解 进程(Process)是计算机中 ...
- python的多线程和多进程(一)
在进入主题之前,我们先学习一下并发和并行的概念: --并发:在操作系统中,并发是指一个时间段中有几个程序都处于启动到运行完毕之间,且这几个程序都是在同一个处理机上运行.但任一时刻点上只有一个程序在处理 ...
- Python之threading多线程,多进程
1.threading模块是Python里面常用的线程模块,多线程处理任务对于提升效率非常重要,先说一下线程和进程的各种区别,如图 概括起来就是 IO密集型(不用CPU) 多线程计算密集型(用CPU) ...
- 第十章:Python高级编程-多线程、多进程和线程池编程
第十章:Python高级编程-多线程.多进程和线程池编程 Python3高级核心技术97讲 笔记 目录 第十章:Python高级编程-多线程.多进程和线程池编程 10.1 Python中的GIL 10 ...
- python爬虫之多线程、多进程+代码示例
python爬虫之多线程.多进程 使用多进程.多线程编写爬虫的代码能有效的提高爬虫爬取目标网站的效率. 一.什么是进程和线程 引用廖雪峰的官方网站关于进程和线程的讲解: 进程:对于操作系统来说,一个任 ...
随机推荐
- MySQL 大表备份、改表
0.背景: 需要对一个千万行数据的表新增字段,具体操作: a.dump 数据 b.delete 数据 c.alter 表 MySQL 版本为5.5,alter表时MySQL会锁表:表行数虽多,当数据 ...
- P4051 [JSOI2007]字符加密 解题报告
P4051 [JSOI2007]字符加密 题目描述 喜欢钻研问题的JS 同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法:把需要加密的信息排成一圈,显然,它们有很多种不 ...
- springcloud之config 配置管理中心之配置属性加密解密
1.为什么要加密解密? 为了维护项目的安全性. 2.配置加密解密的前提是什么? 要进行JCE下载,然后替换掉jdk的security文件: 下载链接:http://www.oracle.com/tec ...
- set.seed(7)什么意思
以前虽然在每个程序都看见过,但是没注意过这个问题,也不理解是什么意思,去搜了一些帖子才明白. 其实,很好理解,就是如果你不加set.seed(7),当然代码也可以执行这个命令,但是每次执行的结果都会不 ...
- R读取excel文件
2017.09.05 我一个下午的成果啊啊啊啊,看看失败 不禁感叹一声,失败的路真是多啊!!!! 一.安装xlsx包 下面具体讲一讲怎么弄的(太笨了,所以学得慢,需要一步一步的来) 用R读取excel ...
- arcgis求邻接矩阵
求邻接矩阵 教程链接 http://m.blog.csdn.net/wan_yanyan528/article/details/49175673 (1) 将目标shp文件导出一份副本备用(以省级为 ...
- np.diff函数
np.diff函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 数组中a[n]-a[n-1] import numpy as np a=np.array([1, 6, 7, 8, 12]) ...
- vue 配置环境遇到的问题总结
之前Vue的官网上对于vue-cli脚手架搭建环境是这样的几步: npm install --global vue-cli vue init webpack my-project cd my-proj ...
- Git之远程库与本地库交互
对于开发人员而言,有时候在公司干完会到家还得接着干,为了方便同步代码,于是乎,可通过GitHub代码托管平台实现代码云同步. GitHub账号开通.创建远程仓库及初始化等操作此处不做赘述: Git内部 ...
- ELASTIC SEARCH 安装
elastic search 2017年3月18日 安装&使用 环境 表 1 环境信息 Centos cat /etc/issue CentOS release 6.8 (Final) cat ...