RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

全部问题

Martin Hope
AsLimbo
Asked: 2024-12-27 03:17:10 +0000 UTC

多线程如何工作?

  • 6

内核->进程->线程图中的是什么?原来一个核心上可以有一个进程,而据说进程和线程没有特别的区别,同时一个进程上可以有多个线程。也就是说,这些可互换概念存在的意义仅仅在于将程序的竞争性执行转移到两个不同的层次上。

  1. 线程级别,每个线程(即任务/程序)都可以访问共享资源,并且
  2. 在进程级别,每个线程(换句话说,任务或程序)都没有这样的访问权限。

在多个进程中运行单个程序和在具有多个线程的单个进程中运行程序之间实际上没有区别,只是第一种情况下的上下文切换(并发)发生在进程级别,而第二种情况下的上下文切换(并发)发生在同一内存区域中的线程级别?

многопоточность
  • 1 个回答
  • 97 Views
Martin Hope
Alexandr_TT
Asked: 2024-12-26 18:46:31 +0000 UTC

2024-2025年新年比赛!

  • 25
比赛还有5天就结束了。回答此问题可能会获得 +500声誉点的奖励。丹尼斯希望引起更多人对这个问题的关注。

恭喜 NG 2025 比赛 NNL993 的获胜者


竞赛序言及条件:
新年实际上是每个人庆祝的唯一节日。他们送礼物,玩得开心,祝贺每个人,甚至是那些很长时间没有联系的人,当然还有许愿。 ***无论如何,让我们一起庆祝 2024-2025 年新年吧!***
往届 NG 比赛链接:
  • 新年树动画 (2018)
  • 2020年新年比赛!
  • 2021年新年比赛!
  • 2022年新年比赛!

введите сюда описание изображения

主题列表:

  • 标题动画 2025 年新年快乐!
  • 弗罗斯特神父、雪少女的形象
  • 新年树:圣诞树装饰品、花环
  • 星空的图像、动画
  • 雪花、降雪的动画
  • 烟花、鞭炮

附加材料:

  • 带人字形的背景图像

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" 
        xmlns:xlink="http://www.w3.org/1999/xlink"
           width="100%" height="100%" viewBox="0 0 1680 1050" preserveAspectRatio="xMinYMin meet" >
 <image  xlink:href="https://isstatic.askoverflow.dev/PBRad.jpg" height="100%" width="100%"/>  
</svg>

  • 圣诞树+雪人

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" 
        xmlns:xlink="http://www.w3.org/1999/xlink"
           width="100%" height="100%" viewBox="0 0 1680 1050" preserveAspectRatio="xMinYMin meet" >
             <!-- Елочка -->
 <image  xlink:href="https://isstatic.askoverflow.dev/PBRad.jpg" height="100%" width="100%"/>  
           <!-- Снеговик -->
 <image  id="Snowman" transform="translate(950 720) scale(1 1)" x="0" xlink:href="https://isstatic.askoverflow.dev/mbefD.png" width="13%" height="13%"   />
</svg>

  • 圣诞树+圣诞老人

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" 
        xmlns:xlink="http://www.w3.org/1999/xlink"
           width="100%" height="100%" viewBox="0 0 1680 1050" preserveAspectRatio="xMinYMin meet" >
 <image  xlink:href="https://isstatic.askoverflow.dev/PBRad.jpg" height="100%" width="100%"/>    
 
 <image id="Ded_Moroz" transform="translate(250 550) scale(1 1)" xlink:href="https://isstatic.askoverflow.dev/TYaVo.png" width="30%" height="30%" opacity="1">
</svg>

  • 雪少女

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" 
        xmlns:xlink="http://www.w3.org/1999/xlink"
           width="100%" height="100%" viewBox="0 0 1680 1050" preserveAspectRatio="xMinYMin meet" >
 <image  xlink:href="https://isstatic.askoverflow.dev/PBRad.jpg" height="100%" width="100%"/>    
          <!-- Снегурочка -->
 <image id="Girl" transform="translate(850 670) scale(0.8 0.8)" xlink:href="https://isstatic.askoverflow.dev/RDght.png" width="30%" height="30%" opacity="1">
</svg>

  • 野兔与吉他

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" 
        xmlns:xlink="http://www.w3.org/1999/xlink"
           width="100%" height="100%" viewBox="0 0 1680 1050" preserveAspectRatio="xMinYMin meet" >
 <image  xlink:href="https://isstatic.askoverflow.dev/PBRad.jpg" height="100%" width="100%"/>    
          <!-- Заяц -->
<image  id="zayka"  transform="translate(450 750) scale(0.75)"
             x="0" xlink:href=" https://isstatic.askoverflow.dev/3xzEW.png"
             
                /> 
</svg>

更新 01/02/2025

  • 2025年的象征+飞溅背景

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" 
        xmlns:xlink="http://www.w3.org/1999/xlink"
           width="100%" height="100%" viewBox="0 0 1680 1050" preserveAspectRatio="xMinYMin meet" >
             <!-- Фон -->
 <image  xlink:href="https://isstatic.askoverflow.dev/PBRad.jpg" height="100%" width="100%"/>    
          <!-- Змея - символ 2025 года -->
  <image  id="snake" x="250" y="350" transform="scale(2)" xlink:href="https://isstatic.askoverflow.dev/QkvLYcnZ.png"/>
</svg>

笔记

对受访者的要求:

  1. 不要在您的答案中一对一地复制别人的代码。

  2. 如果您使用其他人的代码,请务必标明来源和作者的链接以及您具体修改的内容。


要参加比赛,您需要有良好的假期心情,渴望做一些明亮、有趣和难忘的事情。渴望创造性地创造出属于你自己的东西,让你在接下来的一年里温暖而自豪地记住它。
新年比赛最重要的不是胜利,而是参与!


比赛获胜者

涵盖“主题列表”部分中的一个或多个主题的作品,以及以积分形式获得最多正面评价的作品,将受到认可。

javascript
  • 8 个回答
  • 69 Views
Martin Hope
ольгаг
Asked: 2024-12-26 16:12:31 +0000 UTC

加速具有大量循环的代码

  • 5

vba-excel中有以下任务:

在 AutoCAD 中选择块,然后将两个值写入 Excel 列 - 块属性标记的名称 (*autocad)、单元格 A1 及其文本值、单元格 A2。对于样本中的所有块,依此类推。

标签1 标签2 .. 值1 值2 ..

在这种情况下,首先将标签名称写入列中(检查列中已写入的标签名称)。然后,根据标签名称,写入该标签的文本值。

每次这些都是 For..Next 周期。

请告诉我如何优化此类程序以提高速度:使用数组、类和集合?

示例代码:

For Each lBlockObj In objSelectionSet
      Set lBlock = acadDoc.SelectionSets("TempSSet").Item(I - 1)
           
        varAttributes = lBlockObj.GetAttributes
    
'добавление имен тэгов здесь без проверки что уже есть
        For n = LBound(varAttributes) To UBound(varAttributes)
          Cells(2, at_hed).Value = varAttributes(n).TagString
          at_hed = at_hed + 1
        Next n
    
    'запись атрибутов
    For r = 2 To Col_N1
      For n = LBound(varAttributes) To UBound(varAttributes)
        If varAttributes(n).TagString = Cells(2, r).Value Then ActiveCell.Offset(0, r - 2).Value = varAttributes(n).MTextAttributeContent
      Next n
    Next r
    
    ActiveCell.Offset(1, 0).Activate
    
        Set lBlock = Nothing
      Next lBlockObj
excel
  • 1 个回答
  • 104 Views
Martin Hope
Daniel Protopopov
Asked: 2024-12-26 16:11:10 +0000 UTC

错误“集合已修改;枚举操作可能无法执行”的原因不明[关闭]

  • 5
关闭这个问题是题外话。目前不接受对此问题的答复。

该问题是由于无法重现或拼写错误造成的。虽然类似的问题可能与本网站相关,但该问题的解决方案不太可能对未来的访问者有帮助。您通常可以通过在发布问题之前编写和研究一个最小的程序来重现问题来避免此类问题。

昨天关门了。

改进问题

我有一个类似的机制pub/sub,通过 实现Queue<T>,我delegate将消息放入队列中,然后在一般循环中开始处理它们,Dataflow.ActionBlock通过以下方式限制最大块数MaxDegreeOfParallelism:

Console.WriteLine($"Processing {ClosedOrders.Count} closed orders ...");
var closedOrdersBlock = new ActionBlock<OrderMessage>(OnPositionClosed,
            new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 8 });
while (ClosedOrders.Count > 0)
{
   ClosedOrders.TryDequeue(out var closedOrder);
   if (closedOrder != null)
      closedOrdersBlock.Post(closedOrder);
 }

 closedOrdersBlock.Complete();
 closedOrdersBlock.Completion.Wait();

这是委托处理:

protected virtual void OnPositionClose(OrderMessage message)
    {
        try
        {
            foreach (var orderToClose in ClosedOrders.ToList())
            {
                if (message.Order == null || orderToClose.Order == null ||
                    orderToClose.Order.Ticket != message.Order.Ticket) continue;
                Console.WriteLine("Duplicate order for closing received for ticket " + orderToClose.Order.Ticket +
                                  ", skipping");
                return;
            }

            ClosedOrders.Enqueue(message);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Failed to enqueue order with ticket {message.Order?.Ticket} for closing: {ex.Message}");
            Console.WriteLine($"Stack trace: {ex.StackTrace}");
        }
    }

发生错误

“未能将关闭顺序排入队列:集合已修改;枚举操作可能无法执行。”

,据我了解,发生这种情况是因为我在处理队列时向队列添加了新条目,尽管异常表明这种情况发生在 foreach 循环中的委托本身中。这意味着什么?我没有对其进行任何更改,我只是浏览列表并检查数据,但我不会以任何方式更改它。

或者这是因为在处理过程中,新记录被放入队列中?

c#
  • 1 个回答
  • 68 Views
Martin Hope
Victor Pankov
Asked: 2024-12-26 02:59:35 +0000 UTC

当尝试通过 TKinter 界面中的按钮调用异步函数(asyncio)时,出现错误:Timeout context manager should be use inside a task

  • 5

当您运行该文件时,将打开一个用 TKInter+Async 编写的界面窗口。当您按下“START”按钮时,将创建主程序循环并启动 main() 方法。该算法通过多个网络套接字流连接到币安,并开始搜索和打开交易。在这个阶段,一切都进展顺利。但是:当我尝试调用on_close_orders()函数时,它会给出错误Timeout context manager should be use inside a task。我认为这是因为该函数被调用或者位于主循环的上下文之外,但我不明白需要做什么才能将其放在那里。我尝试通过asyncio.create_taks(on_close_orders())调用函数来解决问题,但结果是相同的。完整的错误报告如下: 告诉我如何修复此代码,以便在按下按钮时正常调用该函数?

import asyncio
import threading
import time
import binance_folder
import indicators
from config import API_KEY, SECRET_KEY
import sys
import traceback
import datetime
from indicators import SuperTrend_numpy
import numpy as np

from async_tkinter_loop import async_handler, async_mainloop
from tkinter import ttk
from tkinter import *

async def btn_click_start():
    global main
    global btn_start
    btn_start.state(['disabled'])
    ws_main = threading.Thread(target=asyncio.run, args=(main(),)).start()

async def btn_click_close():
    global client
    if client:
        await on_close_orders()

root = Tk()
root['bg'] = '#ffffff'
root.title('MCG ROBOT')
root.geometry('500x500')

root.resizable(width=False, height=False)

frame_input = Frame(root, bg='gray')
frame_input.place(relx=0.02, rely=0.02, relwidth=0.35, relheight=0.95)
frame_control = Frame(root, bg='white')
frame_control.place(relx=0.39, rely=0.87, relwidth=0.59, relheight=0.1)
title = Label(frame_input, text='Входные параметры', bg='gray', font=40)
title.pack()
btn_start = ttk.Button(frame_control, text='START', command=async_handler(btn_click_start))
btn_start.pack()
btn_start.place(x=10, y=15)
btn_stop = ttk.Button(frame_control, text='STOP')
btn_stop.pack()
btn_stop.place(x=105, y=15)
btn_close = ttk.Button(frame_control, text='CLOSE ALL', command=async_handler(btn_click_close))
btn_close.pack()
btn_close.place(x=200, y=15)
loginInput = Entry(frame_input, bg='white')
loginInput.pack()
loginInput.place(x=10, y=15)
passField = Entry(frame_input, bg='white', show='*')
passField.pack()
passField.place(x=10, y=50)

async def on_close_orders():
    acc = await client.account()
    print('Пытаемся закрыть все открытые позиции')
    for i in acc['positions']:
        if float(i['positionAmt']) != 0.0:
            print(f'Нашли открытую позицию по {i["symbol"]}')
            try:
                if float(i['positionAmt']) > 0:
                    print('Определили, что ордер открыт в покупку')
                    print(f"price={float(i['notional']) * 1.01 / float(i['positionAmt'])}")
                    close = await client.new_order(symbol=i['symbol'], side='SELL', type='MARKET', timeInForce="GTC",
                                                reduceOnly=True, quantity=abs(float(i['positionAmt'])))

                    print(f"по монетке {i['symbol']} закрыли позицию")
                elif float(i['positionAmt']) < 0:
                    print('Определили, что ордер открыт в продажу')
                    close = await client.new_order(symbol=i['symbol'], side='BUY', type='MARKET', timeInForce="GTC",
                                                reduceOnly=True, quantity=abs(float(i['positionAmt'])))
                    print(f"по монетке {i['symbol']} закрыли позицию")
            except Exception as e:
                print(f"Позиция не закрыта по причине: ")
                print(e)

async def main():
    global client
    global all_symbols
    client = binance_folder.Futures(api_key=API_KEY, secret_key=SECRET_KEY, asynced=True, testnet=False)
    all_symbols = await client.load_symbols()
    while not all_symbols:
        await asyncio.sleep(0.5)
    await filter_symbols()
    await limited_historycal_klines_requests(symbols)
    await create_topics()
    asyncio.create_task(execute_order_pool())
    while True:
        await asyncio.sleep(5)

if __name__ == '__main__':
    if sys.platform.startswith('win'):
        asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
    async_mainloop(root)

>     Task exception was never retrieved
>     future: <Task finished name='Task-837' coro=<on_close_orders() done, defined at
> C:\PycharmProjects\python_robot_MCG\Pattern_bot_+TKinter.py:482>
> exception=RuntimeError('Timeout context manager should be used inside
> a task')>
>     Traceback (most recent call last):
>       File "C:\PycharmProjects\python_robot_MCG\Pattern_bot_+TKinter.py",
> line 483, in on_close_orders
>         acc = await client.account()
>       File "C:\PycharmProjects\python_robot_MCG\binance_folder\client.py",
> line 88, in _request_async
>         async with getattr(self.session, method)(self.base_url + url, **kwargs) as response:
>       File "C:\PycharmProjects\python_robot_MCG\.venv\lib\site-packages\aiohttp\client.py",
> line 1357, in __aenter__
>         self._resp: _RetType = await self._coro
>       File "C:\PycharmProjects\python_robot_MCG\.venv\lib\site-packages\aiohttp\client.py",
> line 577, in _request
>         with timer:
>       File "C:\PycharmProjects\python_robot_MCG\.venv\lib\site-packages\aiohttp\helpers.py",
> line 712, in __enter__
>         raise RuntimeError(
>     RuntimeError: Timeout context manager should be used inside a task
python
  • 1 个回答
  • 41 Views
上一页
下一页

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5