标签: pool

应用程序池停止在webrequest上

我有一个网站几个月来一直工作正常.今天早上我开始收到503 Service Unavailable错误.检查IIS后,我注意到应用程序池正在停止.由于我之前遇到过问题,我怀疑WebRequest是问题所在.所以我注释掉了网站的WebRequest部分,猜猜是什么,应用程序池不再被禁用.我怀疑还有另一个安全更新,我无法弄清楚我还需要做些什么来让WebRequest再次运行.

我已经尝试过的事情:
1)aspnet_regiis -u然后-i
2)重新安装.net框架

更多信息:我使用Windows认证asp.net v4.0应用程序池的NetworkService帐户

事件日志中的错误是:
"HipIISEngineStub.dll无法加载.数据是错误."

var request = (HttpWebRequest)WebRequest.Create(path1);
request.Credentials = CredentialCache.DefaultCredentials;
request.PreAuthenticate = true;            

var getResponse = new Func<WebRequest, WebResponse>(req => req.GetResponse());

try
{
    return getResponse(request).GetResponseStream();
}
Run Code Online (Sandbox Code Playgroud)

asp.net pool webrequest

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

字符串池:"Te"+"st"比"Test"快?

我正在尝试一些关于String Pool的性能基准测试.但是,预计结果不会出现.

我做了3个静态方法

  • perform0()方法...每次都创建一个新对象
  • perform1()方法...字符串文字"测试"
  • perform2()方法...字符串常量表达式"Te"+"st"

我的期望是(1.最快 - > 3.最慢)

  1. 由于字符串池化而"测试"
  2. "Te"+"st",因为字符串池,但因为+运算符而比1慢
  3. 新的String(..)因为没有字符串池.

但基准测试显示"Te"+"st"比"Test"快一点.

new String(): 141677000 ns 
"Test"      : 1148000 ns 
"Te"+"st"   : 1059000 ns

new String(): 141253000 ns
"Test"      : 1177000 ns
"Te"+"st"   : 1089000 ns

new String(): 142307000 ns
"Test"      : 1878000 ns
"Te"+"st"   : 1082000 ns

new String(): 142127000 ns
"Test"      : 1155000 ns
"Te"+"st"   : 1078000 ns
...
Run Code Online (Sandbox Code Playgroud)

这是代码:

import java.util.concurrent.TimeUnit;


public class StringPoolPerformance {

    public static long perform0() {
        long start = System.nanoTime();
        for …
Run Code Online (Sandbox Code Playgroud)

java string benchmarking pool concatenation

7
推荐指数
1
解决办法
333
查看次数

Python中的多处理池 - 仅使用单个CPU

原始问题

我试图在Python中使用多处理池.这是我的代码:

def f(x):
    return x

def foo():
    p = multiprocessing.Pool()
    mapper = p.imap_unordered

    for x in xrange(1, 11):
        res = list(mapper(f,bar(x)))
Run Code Online (Sandbox Code Playgroud)

当代码xrange很小时,这段代码使用所有CPU(我有8个CPU)xrange(1, 6).但是,当我将范围增加到xrange(1, 10).我观察到只有1个CPU以100%运行,而其余的只是空转.可能是什么原因?是因为,当我增加范围时,操作系统会因过热而关闭CPU吗?

我该如何解决这个问题?

最小,完整,可验证的例子

为了复制我的问题,我创建了这个例子:它是一个来自字符串问题的简单ngram生成.

#!/usr/bin/python

import time
import itertools
import threading
import multiprocessing
import random


def f(x):
    return x

def ngrams(input_tmp, n):
    input = input_tmp.split()

    if n > len(input):
        n = len(input)

    output = []
    for i in range(len(input)-n+1):
        output.append(input[i:i+n])
    return output 

def foo():

    p = multiprocessing.Pool()
    mapper = p.imap_unordered …
Run Code Online (Sandbox Code Playgroud)

python pool multiprocessing

7
推荐指数
2
解决办法
2183
查看次数

Joblib 内存使用量不断增长

我有以下问题。我的目的是处理一堆文档(将所有单词转换为正常形式,例如 'was' --> 'be', 'were' --> 'be', 'went' --> 'go')。这意味着,我需要打开目录中的每个文件,更改其内容并将其保存在另一个目录中。
由于这个过程很耗时,我决定在joblib的帮助下进行并行处理。下面的代码可以正常工作(我的意思是,它执行了它必须执行的操作),但是我遇到了一个巨大的内存问题。
它一直在不断增长!
它会一直增长,直到服务器上根本没有剩余内存。

from joblib import delayed, Parallel

def process_text(text):
    # some function which processes
    # text and returns a new text
    return processed_text


def process_and_save(document_id):
    with open(path + document_id) as f:
        text = f.read()
    text = process_text(text)
    f = open(other_path + document_id, 'w')
    f.write(text)
    f.close()

all_doc_ids = # a list of document ids which I need to process

Parallel(n_jobs=10)(delayed(process_and_save)(doc_id) for doc_id in all_doc_ids)
Run Code Online (Sandbox Code Playgroud)

我还尝试将 joblib 更改为 multipricessing:

pool = …
Run Code Online (Sandbox Code Playgroud)

memory parallel-processing pool python-2.7 joblib

7
推荐指数
1
解决办法
1937
查看次数

Python多处理:自定义进程池

我将Process类子类化为一个我称之为EdgeRenderer的类.我想使用multiprocessing.Pool,除了常规进程,我希望它们是我的EdgeRenderer的实例.可能?怎么样?

python pool multiprocessing

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

boost pool_alloc

为什么boost :: fast_pool_allocator建立在单例池之上,而不是每个分配器实例的单独池?或者换句话说,为什么只提供它,而不是每个分配器有一个池的选项?会有这个坏主意吗?

我有一个内部使用大约10种不同的boost :: unordered_map类型的类.如果我使用了std :: allocator,那么当它调用delete时,所有内存都将返回系统,而现在我必须在许多不同的分配器类型上调用release_memory.滚动我自己的使用pool而不是singleton_pool的分配器会不会很愚蠢?

谢谢

c++ singleton boost pool

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

用于多个数据库用户的基于Java的数据库连接池库

我们的Java应用程序(在Jetty 7.5.4上运行的Web应用程序)使用底层数据库.有多个数据库用户,Java部分需要使用这些数据库用户访问数据库.我想知道是否有一个数据库连接池库让我们可以访问具有多个数据库用户的数据库.我知道有一堆dbcp库可以让我们使用单个数据库用户,但是找不到任何支持多个数据库用户的库.

任何帮助表示赞赏,谢谢,Pram.

java database connection pool

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

Python 多处理:最大。池工作进程的数量?

我正在使用 Python 的多处理器库并想知道我可以调用的最大工作进程是多少?

例如我已经定义 async.pool = Pool(100)哪个允许我同时运行最多 100 个异步进程,但我不知道它的真正最大值是多少?

有谁知道如何找到我的池的最大值?我猜这取决于 CPU 或内存。

python pool multiprocessing

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

python进程池在每个进程上超时而不是所有池

我需要运行许多进程,但不能全部运行,例如同时运行 4 个进程。multiprocessing.Pool正是我需要的。但问题是,如果进程持续时间超过超时(例如 3 秒),我需要终止进程。Pool只支持等待所有进程的超时,而不是每个进程。这就是我需要的:

def f():
    process_but_kill_if_it_takes_more_than_3_sec()
pool.map(f, inputs)
Run Code Online (Sandbox Code Playgroud)

我找不到使用Pool超时的简单方法。有一个解决方案,从礼Bendersky。这是一个通过Thread.join(timeout). 它有效,(尽管它的停止方法效果不佳)。但是这个方法运行一个新的不必要的线程,而进程的主线程只是在等待,因为我们需要一个超时控制器。应该可以从一个点控制所有超时,如下所示:

import time
from multiprocessing import Process


def f(n):
    time.sleep(n)

timeout = 3
tasks = [1, 2, 4, 1, 8, 2]

procs = []
pool_len = 4
while len(tasks) > 0 or len(procs) > 0:
    if len(tasks) > 0 and len(procs) < pool_len:
        n = tasks.pop(0)
        p = Process(target=f, args=(n,))
        p.start()
        procs.append({'n': n, 'p': p, 't': time.time() + timeout}) …
Run Code Online (Sandbox Code Playgroud)

python timeout pool multiprocessing

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

尝试多进程时如何修复“TypeError:无法序列化'_io.BufferedReader'对象”错误

我正在尝试将代码中的线程切换到多处理以衡量其性能,并希望实现更好的暴力破解潜力,因为我的程序旨在暴力破解受密码保护的 .zip 文件。但是每当我尝试运行该程序时,我都会得到以下信息:

BruteZIP2.py -z "Generic ZIP.zip" -f  Worm.txt
Traceback (most recent call last):
  File "C:\Users\User\Documents\Jetbrains\PyCharm\BruteZIP\BruteZIP2.py", line 40, in <module>
    main(args.zip, args.file)
  File "C:\Users\User\Documents\Jetbrains\PyCharm\BruteZIP\BruteZIP2.py", line 34, in main
    p.start()
  File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\multiprocessing\process.py", line 112, in start
self._popen = self._Popen(self)
  File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\multiprocessing\context.py", line 223, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
  File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\multiprocessing\context.py", line 322, in _Popen
return Popen(process_obj)
  File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\multiprocessing\popen_spawn_win32.py", line 65, in __init__
reduction.dump(process_obj, to_child)
  File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\multiprocessing\reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
TypeError: cannot serialize '_io.BufferedReader' object
Run Code Online (Sandbox Code Playgroud)

我确实找到了与我有相同问题的线程,但它们都没有得到答复/未解决。我也尝试Pool在上面插入,p.start()因为我相信这是由于我在基于 …

python windows pool multiprocessing python-3.x

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