问题列表 - 第40550页

Parallel.For在大约137​​0次迭代后冻结,不知道为什么

我在7500多个对象上运行一个Parallel.For循环.在for循环中,我正在为每个对象做很多事情,特别是调用两个Web服务和两个内部方法.Web服务只是检查对象,处理并返回一个字符串,然后我将其设置为对象上的属性.两种内部方法也是如此.

我没有写任何东西到磁盘或从磁盘读取.

我还在带有标签和进度条的winforms应用程序中更新UI,以便让用户知道它在哪里.这是代码:

var task = Task.Factory.StartNew(() =>
{
  Parallel.For(0, upperLimit, (i, loopState) =>
  {
     if (cancellationToken.IsCancellationRequested)
        loopState.Stop();
     lblProgressBar.Invoke(
       (Action)
       (() => lblProgressBar.Text = string.Format("Processing record {0} of {1}.", (progressCounter++), upperLimit)));
     progByStep.Invoke(
       (Action)
       (() => progByStep.Value = (progressCounter - 1)));

      CallSvc1(entity[i]);
      Conversion1(entity[i]);
      CallSvc2(entity[i]);
      Conversion2(entity[i]);
  });
}, cancellationToken);
Run Code Online (Sandbox Code Playgroud)

这是在Win7 32位机器上进行的.

关于为什么当增量器大约在1370左右时突然冻结的任何想法(这是1361,1365和1371)?

关于如何调试这个并看看有什么锁定的任何想法?

编辑:
以下评论的一些答案:
@BrokenGlass - 不,没有互操作.我将尝试x86编译并让你知道.

@chibacity - 因为它是在后台任务上,所以它不会冻结UI.直到它冻结的时间,进度条和标签每秒大约2点.当它冻结时,它就会停止移动.我可以验证它停止的号码是否已被处理,但不再处理.双核2.2GHz的CPU使用率在运行期间最低,每次3-4%,冻结后1-2%.

@Henk Holterman - 到达1360需要大约10-12分钟,是的,我可以验证所有这些记录是否已经处理但不是剩余的记录.

@CodeInChaos - 谢谢,我会试试!如果我拿出并行代码,代码确实有用,它只需要一天又一天.我没有尝试过限制线程数,但是会.

编辑2:
关于Web服务发生了什么的一些细节

基本上,Web服务正在发生的是它们传递一些数据并接收数据(XmlNode).然后在Conversion1进程中使用该节点,该进程又在实体上设置另一个属性,该属性被发送到CallSvc2方法,依此类推.它看起来像这样:

private void CallSvc1(Entity entity)
{
    var svc = new MyWebService();
    var …
Run Code Online (Sandbox Code Playgroud)

c# parallel-processing freeze task-parallel-library

10
推荐指数
2
解决办法
2272
查看次数

Nutch API建议

我正在开发一个项目,我需要一个成熟的爬虫来完成一些工作,而我正在为此目的评估Nutch.我目前的需求相对简单:我需要一个能够将数据保存到磁盘的爬虫,我需要它能够只重新抓取站点的更新资源并跳过已经爬行的部分.有没有人有任何直接在Java中使用Nutch代码的经验,而不是通过命令行.我想从简单开始:创建一个爬虫(或类似的),最低限度地配置它并启动它,没什么特别的.是否有一些例子,或者我应该看一些资源?我正在阅读Nutch文档,但大部分都是关于命令行,搜索和其他内容.Nutch爬行模块如何可用而无需索引和搜索?任何帮助表示赞赏.谢谢.

java web-crawler nutch

6
推荐指数
1
解决办法
2104
查看次数

对混合的字母/数字数组排序

我有一个混合数组,我需要按字母顺序排序,然后按数字排序

[A1, A10, A11, A12, A2, A3, A4, B10, B2, F1, F12, F3]
Run Code Online (Sandbox Code Playgroud)

我如何将其排序为:

[A1, A2, A3, A4, A10, A11, A12, B2, B10, F1, F3, F12]
Run Code Online (Sandbox Code Playgroud)

我试过了

arr.sort(function(a,b) {return a - b});
Run Code Online (Sandbox Code Playgroud)

但是只按字母顺序对其进行排序.可以使用直接JavaScript或jQuery完成吗?

javascript arrays sorting jquery

55
推荐指数
5
解决办法
5万
查看次数

Prism v4:Unity还是MEF?

我下载了Prism v4并运行了安装程序.我进入目录并运行以下两个批处理文件:

  • 仅限桌面 - 使用Mef QuickStart.bat打开模块化
  • 仅限桌面 - 使用Unity QuickStart.bat打开模块化

当我编译这些应用程序时,我没有看到任何真正的区别.我已经搜索了MEF vs Unity,我发现了一些优点/缺点,但没有任何具体说明是否一个人在Prism中使用"更好"(我知道这是主观的).我想也许如果我列出我的要求,有人可以指出我使用的正确技术(即使它不是Prism 4).

  • 该应用程序将使用WPF(不是 Silverlight)编写.
  • 主要应用将非常薄.
  • 主应用程序将使用Web服务来构建一个人可以访问的"apps/modules"菜单.
  • "apps/modules"将完全包含在其他托管库中.
  • 主应用程序通过反映到这些DLL中来获取视图和视图模型.
  • 主应用程序应将日志记录等服务提供给这些"应用程序/模块".

例如:

基本用户可能有以下选项:

  • ViewOnly地址记录

所有相关地址都在Address.dll内.

高级用户可能具有以下选项:

  • 新地址记录
  • 打开地址记录(更新/删除)
  • 管理用户

所有相关地址都在Address.dll内.
管理相关的所有项目都在Admin.dll中.

应用程序不应该实际引用这些DLL中的任何一个,我打算反映它们,以便如果有100个不同的模块,并且用户只能访问其中的2个,则只下载和使用其中的2个.有权访问其中10个的用户获得10个用户.

我已经通过WebService解决了下载DLL.:)

wpf mef unity-container mvvm prism-4

30
推荐指数
1
解决办法
1万
查看次数

更改wordpress管理区域中的菜单项标签?

有没有办法更改管理区域内菜单项的标签?就像当您为其指定每个标签时注册新的自定义帖子类型时,但是对于默认菜单项.

提前致谢!

wordpress wordpress-theming

6
推荐指数
2
解决办法
1万
查看次数

这个C++值有保证吗?

考虑我有一个类Foo(没有它的&运算符重载)是从这个类的&运算符获得的地址保证与它的this指针具有相同的值?

在下面的代码中,equalPointer保证返回true?是否存在可能返回false的情况(例如,在考虑多重继承时)?

class Foo
{
  bool equalPointer(const Foo * f} { return f==this; }
}
Foo f;
f.equalPointer(&f);
Run Code Online (Sandbox Code Playgroud)

c++ this

8
推荐指数
1
解决办法
169
查看次数

使用Linq与自定义IEqualityComparer相交

长话短说:我有2个对象集合.一个包含好的值(让我们称之为"好"),其他默认值(先生"默认").我希望联盟的相交在良好和默认之间,以及默认.换句话说:相交(联合(良好,默认),默认).有人可能认为它解析为默认值,但这里是棘手的:我使用自定义IEqualityComparer.

我得到了以下课程:

class MyClass
{
    public string MyString1;
    public string MyString2;
    public string MyString3;
}

class MyEqualityComparer : IEqualityComparer<MyClass>
{
    public bool Equals(MyClass item1, MyClass item2)
    {
        if(item1 == null && item2 == null)
            return true;
        else if((item1 != null && item2 == null) ||
                (item1 == null && item2 != null))
            return false;

        return item1.MyString1.Equals(item2.MyString1) &&
               item1.MyString2.Equals(item2.MyString2);
    }

    public int GetHashCode(MyClass item)
    {
        return new { item.MyString1, item.MyString2 }.GetHashCode();
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是我的收藏品Good和Default集合的特征:

默认值:它是一个很大的集合,包含所有想要的{MyString1,MyString2}对,但是你可以猜测,MyString3值是默认值.

好:它是一个较小的集合,主要包含默认集合中的项目,但具有一些好的MyString3值.它还有一些{MyString1,MyString2},它们位于想要的集合之外.

我想要做的是:只获取Good中默认的项目,但将Default中的其他项目添加到默认项目中.

这是我认为最好的尝试:

HalfWantedResult = Good.Union(Default, …
Run Code Online (Sandbox Code Playgroud)

c# linq intersection intersect

14
推荐指数
2
解决办法
2万
查看次数

如何在Haskell中运行一系列操作(函数)?

假设我有一个值列表,我想要应用一系列操作,直到得到最终结果:

[0, 1, 2]

firstOperation xs = map (+1) xs
secondOperation xs = filter even xs
thirdOperation xs = sum xs
Run Code Online (Sandbox Code Playgroud)

虽然我确信还有其他更好的方法可以解决这个问题,但我目前唯一知道的是定义一个函数,该函数将所有这些函数嵌套在另一个函数中:

runAllOperations xs = thirdOperation (secondOperation (firstOperation xs))
Run Code Online (Sandbox Code Playgroud)

但这既丑陋又引发了一个问题,即如果我有10次操作,将这段代码变成一个维护噩梦.

在这里实现某种类似的正确方法是什么?请记住,我上面给出的示例仅仅是对我当前项目所面临的内容的过度简化.

haskell functional-programming

2
推荐指数
1
解决办法
2346
查看次数

覆盖一个django表单元素上的数据验证

我的表单上有一个选择列表下拉框,其中填充了模型(导演)中的数据.此下拉列表的值不需要保存; 它实际上只用于动态触发表单的另一个元素(标题为Films的下拉列表).因此,当用户选择Director时,它会动态填充第二个列表,并将Films附加到该Director.

第一个列表的第一个元素是"所有董事".它不是过滤电影列表,而是让所有电影都显示在第二个列表中,因为选择了所有导演.

如果用户选择特定的Director然后选择Film,则表单会正确提交.问题是,如果用户选择所有导演,然后选择电影,则在提交表单时,它会告诉我,我对导演的选择无效,因为它不是可用选项之一.在这种情况下,可用选项(我假设)是数据库中现有的Director.objects之一.但因为我不关心导演,所以我不需要此条目有效.我只需要电影有效.

我正在使用ModelForm. 如何在Director表单字段上禁用或覆盖数据验证,以便忽略该字段生成的错误?

django validation django-forms

13
推荐指数
2
解决办法
1万
查看次数

如何使用正则表达式在数字和字符之间进行拆分?

我有一个包含工作日和开放时间的字符串,如何使用正则表达式将这些字符串分割成行?字符串的示例是:

Mån - Tor6:30 - 22:00Fre6:30 - 20:00Lör9:00 - 18:00Sön10:00 - 19:00
Run Code Online (Sandbox Code Playgroud)

我想分开一个较低的字母和一个数字,以及一个数字和一个大写字母

Mån - Tor  
6:30 - 22:00  
Fre  
6:30 - 20:00  
Lör  
9:00 - 18:00  
Sön  
10:00 - 19:00 
Run Code Online (Sandbox Code Playgroud)

提前致谢!

regex

4
推荐指数
1
解决办法
3680
查看次数