小编Bra*_*mon的帖子

使用asyncio.Queue进行生产者-消费者流

我对如何使用asyncio.Queue特定的生产者-消费者模式感到困惑,在该模式中,生产者和消费者都可以同时独立运行。

首先,请考虑以下示例,该示例紧随docs中的asyncio.Queue示例:

import asyncio
import random
import time

async def worker(name, queue):
    while True:
        sleep_for = await queue.get()
        await asyncio.sleep(sleep_for)
        queue.task_done()
        print(f'{name} has slept for {sleep_for:0.2f} seconds')

async def main(n):
    queue = asyncio.Queue()
    total_sleep_time = 0
    for _ in range(20):
        sleep_for = random.uniform(0.05, 1.0)
        total_sleep_time += sleep_for
        queue.put_nowait(sleep_for)
    tasks = []
    for i in range(n):
        task = asyncio.create_task(worker(f'worker-{i}', queue))
        tasks.append(task)
    started_at = time.monotonic()
    await queue.join()
    total_slept_for = time.monotonic() - started_at
    for task in tasks:
        task.cancel() …
Run Code Online (Sandbox Code Playgroud)

python python-3.x async-await python-asyncio

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

aiohttp并发GET请求导致ClientConnectorError(8,'提供nodename或servname,或者未知')

我被一个似乎与asyncio+ 相关的问题困扰,aiohttp因此,当发送大量并发GET请求时,超过85%的请求引发了一个aiohttp.client_exceptions.ClientConnectorError异常,最终源于

socket.gaierror(8, 'nodename nor servname provided, or not known')
Run Code Online (Sandbox Code Playgroud)

在主机/端口上发送单个GET请求或执行基础DNS解析时,不会引发此异常.

虽然在我的真实代码中,我正在进行大量自定义,例如使用自定义TCPConnector实例,但我可以仅使用"默认" aiohttp类实例和参数来重现问题,如下所示.

我跟踪了回溯,异常的根与DNS解析有关.它来自于调用的_create_direct_connection方法.aiohttp.TCPConnector._resolve_host()

我也尝试过:

  • 使用(而不是使用) aiodns
  • sudo killall -HUP mDNSResponder
  • 使用family=socket.AF_INET作为参数TCPConnector(虽然我很确定aiodns无论如何都使用它).这使用2而不是默认的int 0到该参数
  • 随着ssl=Truessl=False

一切都无济于事.


完整的代码重现如下.输入的URL位于https://gist.github.com/bsolomon1124/fc625b624dd26ad9b5c39ccb9e230f5a.

import asyncio
import itertools

import aiohttp
import aiohttp.client_exceptions

from yarl import URL

ua = itertools.cycle(
    (
        "Mozilla/5.0 (X11; Linux i686; rv:64.0) Gecko/20100101 Firefox/64.0",
        "Mozilla/5.0 (Macintosh; U; Intel …
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-asyncio aiohttp

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

GridSearchCV 不支持多类吗?

我尝试根据此处的答案将 GridSearchCV 用于多类案例:

加速预测

但我得到了价值错误, multiclass format is not supported.

如何将这种方法用于多类案例?

以下代码来自上述链接中的答案。

import numpy as np
from sklearn.datasets import make_classification
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.pipeline import make_pipeline
from sklearn.grid_search import GridSearchCV
from sklearn.metrics import accuracy_score, recall_score, f1_score, roc_auc_score, make_scorer

X, y = make_classification(n_samples=3000, n_features=5, weights=[0.1, 0.9, 0.3])

pipe = make_pipeline(StandardScaler(), SVC(kernel='rbf', class_weight='auto'))

param_space = dict(svc__C=np.logspace(-5,0,5), svc__gamma=np.logspace(-2, 2, 10))

accuracy_score, recall_score, roc_auc_score
my_scorer = make_scorer(roc_auc_score, greater_is_better=True)

gscv = GridSearchCV(pipe, param_space, scoring=my_scorer)
gscv.fit(X, y)

print gscv.best_params_
Run Code Online (Sandbox Code Playgroud)

python scikit-learn

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

Redis py:何时使用连接池?

pool = redis.ConnectionPool(host='10.0.0.1', port=6379, db=0)
r = redis.Redis(connection_pool=pool)
Run Code Online (Sandbox Code Playgroud)

r = redis.Redis(host='10.0.0.1', port=6379, db=0)
Run Code Online (Sandbox Code Playgroud)

这两个工作正常.

什么是使用连接池背后的想法?你什么时候用它?

python redis

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

如何在Python中计算线性回归模型的AIC?

我想为线性模型计算AIC以比较它们的复杂性.我做了如下:

regr = linear_model.LinearRegression()
regr.fit(X, y)

aic_intercept_slope = aic(y, regr.coef_[0] * X.as_matrix() + regr.intercept_, k=1)

def aic(y, y_pred, k):
   resid = y - y_pred.ravel()
   sse = sum(resid ** 2)

   AIC = 2*k - 2*np.log(sse)

return AIC
Run Code Online (Sandbox Code Playgroud)

但是我收到一个divide by zero encountered in log错误.

python linear-regression

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

从列表中取出每个第n个块

给出一个清单:

import string
a = list(string.ascii_lowercase)
Run Code Online (Sandbox Code Playgroud)

什么是返回m个元素的每第n个块的Pythonic方法?请注意,这与仅返回每个第n个元素不同.

获得3个元素的3个块中的一个的所需结果(取3,跳过6,取3,跳过6 ......):

['a', 'b', 'c', 'j', 'k', 'l', 's', 't', 'u']
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

import itertools
s1 = a[::9]
s2 = a[1::9]
s3 = a[2::9]    
res = list(itertools.chain.from_iterable(zip(s1,s2, s3)))
Run Code Online (Sandbox Code Playgroud)

有更干净的方式吗?

python python-itertools python-3.x

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

如何将pandas数据帧的第n行作为pandas数据帧提取?

假设Pandas数据框如下所示:

X_test.head(4)
    BoxRatio  Thrust  Velocity  OnBalRun  vwapGain
5     -0.163  -0.817     0.741     1.702     0.218
8      0.000   0.000     0.732     1.798     0.307
11     0.417  -0.298     2.036     4.107     1.793
13     0.054  -0.574     1.323     2.553     1.185
Run Code Online (Sandbox Code Playgroud)

如何将第三行(作为row3)提取为pd数据框?换句话说,row3.shape应该是(1,5)而row3.head()应该是:

 0.417  -0.298     2.036     4.107     1.793
Run Code Online (Sandbox Code Playgroud)

python python-3.x pandas

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

检查字符串是整数还是浮点数

所以我正在创建一个程序来显示数字系统,但是我在第一个障碍时遇到了问题.该程序将从用户那里获取一个数字,然后在整个程序中使用该数字,以便解释几个计算机科学概念.

在解释我的第一部分编号系统时,程序会说出它是什么类型的编号.我这样做是通过将字符串转换为浮点数来实现的.如果浮点数后面只有".0",那么它将它转换为整数.

目前我正在使用此代码

while CorrectNumber == False:
try:
    Number = float(NumberString) - 0
    print (Number)
except:
    print ("Error! Not a number!")
Run Code Online (Sandbox Code Playgroud)

这很有用,因为它显示用户是否输入了数字.但是,我不确定如何检查小数位后的值,以检查是否应将其转换为整数.有小费吗?

python number-systems python-3.x

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

在Python中为API令牌生成UUID

我目前正在Python中生成UUID,如下所示:

import uuid
import secrets

uuid.UUID(bytes=secrets.token_bytes(16))
Run Code Online (Sandbox Code Playgroud)

这可以安全地用作API令牌或访问令牌吗?

python secret-key

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

访问`.days`以获得大熊猫系列的时间

大熊猫TimedeltaIndex具有days可用于与其他普通dtypes(float64等)进行操作的属性:

import pandas as pd
from pandas.tseries import offsets
idx1 = pd.date_range('2017-01', periods=10)
idx2 = idx1 + offsets.MonthEnd(1)
tds = idx2 - idx1

print(tds.days - 2)
Int64Index([28, 27, 26, 25, 24, 23, 22, 21, 20, 19], dtype='int64')
Run Code Online (Sandbox Code Playgroud)

但是,当tds转换为Series(显式或作为DataFrame列)时,它将失去此属性。

print(pd.Series(tds).days)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-115-cb20b4d368f4> in <module>()
----> 1 print(pd.Series(tds).days)

C:\Users\bsolomon\Anaconda3\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
   3079             if name in self._info_axis:
   3080                 return self[name]
-> 3081             return object.__getattribute__(self, name)
   3082 
   3083     def …
Run Code Online (Sandbox Code Playgroud)

python timedelta python-3.x pandas

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