我有一项任务是获取一段 c# 代码,以使我的 CPU 始终保持 100% 运行。我尝试过无限循环、大整数计算、连接许多非常长的字符串……一切要么在一段时间内达到 100%,然后下降到 60%,或者根本没有达到 100%。
是否有一段简单的代码可以实现这一点?
也使用 Windows 10
我正在尝试在 angular 5 项目中使用 lodash 油门和去抖动功能,但它似乎没有按预期工作。
行为是永远不会执行传递给任何一个函数的函数参数。
例如使用油门,我使用以下方法导入它:
import throttle = require('lodash/throttle');
Run Code Online (Sandbox Code Playgroud)
然后,在任何方法中,我都有以下内容:
throttle(this.testFunction, 100);
Run Code Online (Sandbox Code Playgroud)
我也试过:
throttle(() => {
this.testFunction();
}, 1000);
Run Code Online (Sandbox Code Playgroud)
testFunction 只是以下内容:
public testFunction() {
console.log('test function!@!!@!');
}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!
目的是让我的应用程序向 Redis 队列发送潜在的大量电子邮件(该位正在工作),然后 Redis 将这些处理限制为每选定的分钟数只发送一定数量的电子邮件。
对于此示例,我有一个将时间附加到文件的测试作业,我试图将其限制为每 60 秒一次。
到目前为止,我有应用程序成功地将 50 个作业的测试量推送到 Redis 队列。我可以登录到 Horizon 并在“processjob”队列中看到这 50 个作业。我也可以登录redis-cli,在列表键“queues:processjob”下看到50个集合。
我的问题是,一旦我尝试打开油门,只有 1 个作业运行,其余作业失败并出现以下错误:
Predis\Response\ServerException: ERR Error running script (call to f_29cc07bd431ccbf64637e5dcb60484560fdfa2da): @user_script:10: WRONGTYPE 对 /var/www/html/smhub/vendor/predis/ 中持有错误类型值的键的操作客户端.php:370
如果我取消节流阀,所有工作文件和 5 个作业都会立即运行。
我想也许这是不正确的键名,但如果我更改以下内容:
public function handle()
{
//
Redis::throttle('queues:processjob')->allow(1)->every(60)->then(function(){
Storage::disk('local')->append('testFile.txt',date("Y-m-d H:i:s"));
}, function (){
return $this->release(10);
});
}
Run Code Online (Sandbox Code Playgroud)
对此:
public function handle()
{
//
Redis::funnel('queues:processjob')->limit(1)->then(function(){
Storage::disk('local')->append('testFile.txt',date("Y-m-d H:i:s"));
}, function (){
return $this->release(10);
});
}
Run Code Online (Sandbox Code Playgroud)
然后一切正常。
有人告诉我,问题在于 redis 键的类型是“列表”,并且作业都在一个列表下。话虽如此,如果它不能以这种方式工作,我们将如何节流队列,因为节流需要一个唯一的键。
我有一个线程负责入队,一个线程负责出队。然而,数据入队的频率远远超过出队+处理数据所需的时间。当我执行以下操作时,数据处理出现了巨大的延迟:
public void HandleData()
{
while (true)
{
try
{
if (Queue.Count > 0)
{
Queue.TryDequeue(out item);
ProcessData(item);
}
else
{
Thread.Sleep(10);
}
}
catch (Exception e)
{
//...
}
}
}
Run Code Online (Sandbox Code Playgroud)
接下来,我尝试在单独的任务中处理数据,但这最终会影响项目中的其他任务,因为这种处理最终会占用分配给应用程序的大部分资源并生成大量线程。
public void HandleData()
{
while (true)
{
try
{
if (Queue.Count > 0)
{
Queue.TryDequeue(out item);
Task.Run(() => ProcessData(item));
}
else
{
Thread.Sleep(10);
}
}
catch (Exception e)
{
//
}
}
}
Run Code Online (Sandbox Code Playgroud)
接下来,我尝试了以下操作:
public void HandleData()
{
List<Task> taskList = new List<Task>();
while (true)
{
try …
Run Code Online (Sandbox Code Playgroud) c# multithreading throttling task-parallel-library concurrent-queue
Laravel 开箱即用地提供了两个可用于速率限制(节流)的中间件:
\Illuminate\Routing\Middleware\ThrottleRequests::class
\Illuminate\Routing\Middleware\ThrottleRequestsWithRedis::class
Run Code Online (Sandbox Code Playgroud)
正如文档所述,如果您使用 Redis 作为缓存驱动程序,您可以像这样更改映射Kernel.php
:
/**
* The application's middleware aliases.
*
* Aliases may be used instead of class names to conveniently assign middleware to routes and groups.
*
* @var array<string, class-string|string>
*/
protected $middlewareAliases = [
// ...
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequestsWithRedis::class
// ...
];
Run Code Online (Sandbox Code Playgroud)
问题是上述内容不是动态的,依赖于环境。例如,在我的staging
环境production
中,我使用 Redis,但在我的local
环境中development
,我不使用 Redis。
有一个明显的脏修复,如下所示(Kernel.php
):
/**
* The application's middleware aliases.
*
* Aliases may …
Run Code Online (Sandbox Code Playgroud) 我正在寻找限制信息,这是迄今为止我能找到的最好的信息:https : //docs.microsoft.com/en-us/azure/search/search-limits-quotas-capacity#throttling -限制
进行搜索
https://{{search-service}}.search.windows.net/indexes/:index/docs?api-version={{version}}&search=some text
参考页面中的这一行是否超出了搜索限制?
获取索引 (GET /indexes/myindex):每个搜索单元每秒 10 个
我正在尝试查看仅在没有其他任何事情发生(例如索引器正在运行)的理想情况下进行搜索的限制。
我是 Jenkins 管道的新手,并试图了解如何限制“整个”管道,这基本上意味着将发生以下情况:
1)我将能够运行同一管道最大并发运行数,例如MAX_CONCURRENT_RUNS
= 2
2)每次运行(本质上是构建)都可以有自己的参数,具有以下“额外要求”,即两个(或更多)不同的构建可以(如果需要)发送给它的相同参数。
3) 在特定时间点已经存在管道 MAX_CONCURRENT_RUNS
的构建(运行)的情况下,MAX_CONCURRENT_RUNS
+1 运行将“保留”自身,直到第一个当前运行的构建终止,然后才开始执行。
我已经查看了这个问题以及这个问题,但是它们都“不完全”适用于我的情况(要求)。
我正在使用 Jenkins 服务器版本2.176.1
想问是否有人知道如何在基于函数的视图中为不同的请求方法设置不同的限制范围的方法或解决方法。
例如
@api_view(['GET', 'POST'])
def someFunction(request):
if request.method == 'GET':
# set scope for get requests
elif request.method == 'POST':
# set scope for post requests
Run Code Online (Sandbox Code Playgroud)
我尝试环顾四周,但所有答案仅适用于基于类别的视图。非常感谢您的帮助,谢谢。
我有一个对性能敏感的 XCode C++ 项目,并且我正在使用 CPU 节流技巧。本质上我添加了这段代码:
// function to occupy a thread for an infinite amount of time
void coreEngager() {
while (true) {}
}
// call it in the background thread
std::thread t1(coreEngager);
// call it once the work is done
t1.detach();
Run Code Online (Sandbox Code Playgroud)
这个小技巧可以将计算速度提高约 50%,这对我来说非常重要。但我最近发现了一个问题 - 如果我尝试在发布模式下运行该项目,此代码会崩溃。函数中发生崩溃coreEngager
。我以前没有这个问题,现在在 Linux 和 Windows 上也没有这个问题。您能否告知发生了什么变化或如何使 CPU 限制在 MacOS 上发挥作用?
我正在 Shiny 中进行一些复杂的计算,用户通过 ActionButton 启动。然而,我担心用户在短时间内多次向按钮发送垃圾邮件,这可能会带来大量不必要的计算。我尝试过使用debounce()
,但它仍然记录所有按钮点击。这是一个代表:
library(shiny)
ui <- fluidPage(
actionButton("start", "Press me")
)
server <- function(input, output, session) {
new_number <- eventReactive(input$start, {
print("Button press registered!")
# sleep to imitate a long calculation
Sys.sleep(1)
runif(1, 1, 1000)
}) %>% debounce(millis = 3000)
observeEvent(new_number(),
print(new_number()))
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
尝试运行该应用程序并尽可能快地单击。
它显示该按钮被记录为被按下多次,每次都会停止该过程完整的时间。
输出值仅打印一次,而不是单击按钮的次数,我怀疑这可能有用。但我不知道如何注册,例如,每秒最多按下一个按钮。
throttling ×11
c# ×2
cpu ×2
django ×2
laravel ×2
python ×2
redis ×2
angular ×1
c++ ×1
concurrency ×1
javascript ×1
jenkins ×1
laravel-5.5 ×1
limit ×1
lodash ×1
macos ×1
php ×1
r ×1
shiny ×1
timing ×1
typescript ×1
windows-10 ×1
xcode ×1