小编Bas*_*asj的帖子

使用Google Apps脚本的GmailApp中的250/500线程限制

GmailApp在Google Apps脚本中使用时,我注意到以下限制:

var threads = GmailApp.search("to:test@example.com");
Logger.log(threads.length);  // 250 max

var threads = GmailApp.search("label:mylabel");
Logger.log(threads.length);  // 500 max

var label = GmailApp.getUserLabelByName('mylabel');
var threads2 = label.getThreads();
Logger.log(threads2.length); // 500 max
Run Code Online (Sandbox Code Playgroud)

您如何在500或250多个线程上进行工作(例如提取电子邮件地址并将其添加到列表中)

您会通过按日期拆分来手动执行此操作吗(不是很漂亮,但可能还在工作)?

gmail google-apps-script gmail-api

3
推荐指数
1
解决办法
1123
查看次数

Visual Studio Express“for Windows”与“for Windows Desktop”

我正在重新安装旧版本的 MSVC++ 来尝试一些东西,我看到了两个不同的版本:

有什么区别:

Visual Studio Express 2013 for Windows Desktop with Update 5

Visual Studio Express 2013 for Windows with Update 5

我以为for Windows==for Windows Desktop + something else (for Windows Phone?)

for Windows会是更大的。但它不是:

... 适用于 Windows DVD 2.9 GB ... 适用于 Windows 桌面 DVD 3.3 GB

Visual Studio Express“for Windows”和“for Windows Desktop”有什么区别?


注意:这里是下载链接Visual Studio Express 2013 for Windows Desktop with Update 5

windows visual-studio visual-c++ visual-studio-2013

3
推荐指数
1
解决办法
3158
查看次数

ImportError:没有名为pywin32的模块

我都尝试过

pip install pypiwin32
Run Code Online (Sandbox Code Playgroud)

pip install pywin32
Run Code Online (Sandbox Code Playgroud)

并且它们都在我的Windows 7 x64 / Python 2.7.15 64位(这是我在PC上安装的唯一Python)上获得了成功。我什至做到了:

python C:\Python27\Scripts\pywin32_postinstall.py -install
Run Code Online (Sandbox Code Playgroud)

它成功返回:

...
创建文档的快捷方式
pywin32扩展已成功安装。

做的时候我仍然明白import pywin32

ImportError:没有名为pywin32的模块

如何pywin32在Windows 7 上安装?

python windows pywin32 windows-7-x64

3
推荐指数
2
解决办法
2734
查看次数

特定代码行的类似装饰器的语法

链接主题(但不重复):装饰器对代码的特定行而不是整个方法进行计时?

我知道装饰器通常如何用于 Python 函数。

单行代码是否有类似的概念/语法?

示例:与

def measuretime(lineofcode):
    start = time.time()
    lineofcode()
    print time.time() - start
Run Code Online (Sandbox Code Playgroud)

然后

@measuretime
im = Image.open(BytesIO(base64.b64decode(data)))
Run Code Online (Sandbox Code Playgroud)

会被解释为

start = time.time()
im = Image.open(BytesIO(base64.b64decode(data)))
print time.time() - start
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 我知道像这样测量执行时间并不是最佳的,最好使用timeit等等,但这只是一个随机示例来展示我正在寻找的内容(单行代码的装饰器)

  • 我正在寻找 1 或 2 行代码解决方案(当然还有函数的定义)。如果解决方案需要超过 2 行代码(即超过类似的代码@measuretime),那么最好放弃并执行正常操作:

      start = time.time()
      im = Image.open(BytesIO(base64.b64decode(data)))
      print time.time() - start
    
    Run Code Online (Sandbox Code Playgroud)

python decorator python-decorators

3
推荐指数
1
解决办法
1105
查看次数

添加或删除或重新加载特定的 VirtualHost,而无需重新启动 Apache(并中断其他 VirtualHost 的请求)

上下文:假设我有这个/etc/apache2/sites-available/000-default.conf文件(Debian 9,Apache 2.4):

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html/site1
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

并且一些客户目前正在浏览该网站,甚至其中一些客户正忙于在该网站上下载 1 GB 的文件(假设他们正在下载www.example.com/bigfile.zip)。

现在我想添加一个新VirtualHost000-default.conf文件并将文件编辑为(并保存):

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html/site1
</VirtualHost>

<VirtualHost *:80>
    ServerName example2.com
    DocumentRoot /var/www/html/site2
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

现在如果我这样做

service apache2 restart
Run Code Online (Sandbox Code Playgroud)

它将成功启用新网站example2.com,但也会停止来自 example.com 的客户端的所有正在进行的请求,并且它将中断例如正在进行的下载。

问题:有没有办法VirtualHost为其他VirtualHosts添加一个新的而不中断正在进行的请求(长时间下载等)?

笔记:

apache apache2 virtualhost

3
推荐指数
1
解决办法
6305
查看次数

找到阵列低于某个阈值的第一个索引(并保持在一段时间以下)

A是一维numpy的阵列,阈值t,以及一个窗口长度K.

如何找到最小指数j,这样A[j:j+K] < t(即第一次A 在宽度为K的整个窗口上保持低于阈值).

我已经尝试了(未完成的)循环,但它似乎远非最佳,我想也许有一个聪明的"numpy方式"来做它.


旁注:我们要测试我们是否低于阈值的事实某个窗口长度中,而不是ponctual值,可以有效避免开启/关闭/开启/关闭/开启阈值附近的开/关的文物(见迟滞:"故意将滞后添加到电子电路中,以防止不必要的快速切换补偿开关中的触点反弹或电信号中的噪声.").

python arrays numpy windowing threshold

3
推荐指数
1
解决办法
69
查看次数

用numpy滚动最大

这将计算A一个长度为的滑动窗口上的“滚动最大值” (类似于滚动平均值)K

import numpy as np
A = np.random.rand(100000)
K = 10
rollingmax = np.array([max(A[j:j+K]) for j in range(len(A)-K)])
Run Code Online (Sandbox Code Playgroud)

但我认为,就性能而言,这远非最佳。

我知道该pandas库具有rolling_max,但是在我的项目中,我不想使用这种新的依赖关系。

问题:是否有一种简单的方法仅使用numpy计算滚动最大值?

python numpy

3
推荐指数
2
解决办法
859
查看次数

展开角度以具有连续相位

假设我有一系列类似于此的阶段:

import numpy as np
import matplotlib.pyplot as plt
phase = np.linspace(0., 100., 1000) % np.pi
plt.plot(phase)
plt.show()
Run Code Online (Sandbox Code Playgroud)

(有很多这样的不连续性)

如何从中获得一系列更"连续"的阶段?

当然,我已经尝试过np.unwrap:

plt.plot(np.unwrap(phase))
Run Code Online (Sandbox Code Playgroud)

要么

plt.plot(np.unwrap(phase),discont=0.1)
Run Code Online (Sandbox Code Playgroud)

但它保持完全相似:

我的期望是这样的展开:

在此输入图像描述

python signal-processing numpy complex-numbers phase

3
推荐指数
1
解决办法
2136
查看次数

是否有更多Pythonic方式通过其字符串名称访问函数?

我有一些函数(硬编码,我不希望Python计算衍生物,实际上函数更复杂):

def f(x): return x
def g(x): return x ** 2
def f_prime(x): return 1
def g_prime(x): return 2 * x
Run Code Online (Sandbox Code Playgroud)

和列表功能:

myfunctions = [f, f, g, f]
Run Code Online (Sandbox Code Playgroud)

如何获取相关的"素数"功能列表?

我在考虑:

myderivatives = [globals()[function.__name__ + '_prime'] for function in myfunctions]
Run Code Online (Sandbox Code Playgroud)

它有效:

[<function f_prime at 0x00000000022CF048>, <function f_prime at 0x00000000022CF048>, <function g_prime at 0x00000000022CF0B8>, <function f_prime at 0x00000000022CF048>]
Run Code Online (Sandbox Code Playgroud)

但是有更多的Pythonic方法来获取与原始版本相关的"主要"功能列表吗?


还有一个角落案例:

from module1 import thisfunction as f
def f_prime(x): 
    pass

globals()[f.__name__ + '_prime']  
# doesn't work because f.__name__ + '_prime' is 'thisfunction_prime' and …
Run Code Online (Sandbox Code Playgroud)

python variables function

3
推荐指数
1
解决办法
60
查看次数

为什么只有一个 BrowserView 与 Electron 一起工作?

我试图BrowserView在同一个窗口中并排放置两个。此代码运行:

const { app, BrowserWindow, BrowserView } = require('electron');
function createWindow() {
    browserWindow = new BrowserWindow({ width: 1200, height: 600 });
    let browserView1 = new BrowserView({ webPreferences: { nodeIntegration: false }});
    let browserView2 = new BrowserView({ webPreferences: { nodeIntegration: false }});
    browserWindow.setBrowserView(browserView1);
    browserWindow.setBrowserView(browserView2);
    browserView1.setBounds({ x: 0, y: 0, width: 600, height: 600 });
    browserView2.setBounds({ x: 600, y: 0, width: 600, height: 600 });
    browserView1.webContents.loadURL('https://www.example.com');
    browserView2.webContents.loadURL('https://www.google.com');
    browserWindow.on('closed', function () { browserWindow = null; });
}
app.on('ready', createWindow);
Run Code Online (Sandbox Code Playgroud)

但只BrowserView …

javascript browser google-chrome electron

3
推荐指数
1
解决办法
4883
查看次数