告诉循环线程停止循环的正确方法是什么?
我有一个相当简单的程序,它在一个单独的threading.Thread类中ping指定的主机.在这个类中,它会休眠60秒,再次运行直到应用程序退出.
我想在我的实现一个'停止'按钮,wx.Frame要求循环线程停止.它不需要立即结束线程,它可以在唤醒后停止循环.
这是我的threading类(注意:我还没有实现循环,但它可能属于PingAssets中的run方法)
class PingAssets(threading.Thread):
def __init__(self, threadNum, asset, window):
threading.Thread.__init__(self)
self.threadNum = threadNum
self.window = window
self.asset = asset
def run(self):
config = controller.getConfig()
fmt = config['timefmt']
start_time = datetime.now().strftime(fmt)
try:
if onlinecheck.check_status(self.asset):
status = "online"
else:
status = "offline"
except socket.gaierror:
status = "an invalid asset tag."
msg =("{}: {} is {}. \n".format(start_time, self.asset, status))
wx.CallAfter(self.window.Logger, msg)
Run Code Online (Sandbox Code Playgroud)
在我的wxPyhton框架中,我从"开始"按钮调用此函数:
def CheckAsset(self, asset):
self.count += 1
thread = PingAssets(self.count, asset, self)
self.threads.append(thread)
thread.start()
Run Code Online (Sandbox Code Playgroud) 以下是案例.我在日志文件中寻找以下模式.
所有字符串都是AB_N或的形式CDE_N.
AB并且CDE是固定字母,后面是下划线.
N可以是2或3个数字.
我试过(AB|CDE)_\d{2,3}但是返回了一个组.我不能这样做,\w{2,3}\d{2,3}因为它必须是AB或CDE不是AC或FEG.省略括号也会中断.我确信解决方案很简单,但我是python和regex的新手,无法解决这个问题.
我有一个股票和头寸列表作为元组.买入为正,卖出为负.例:
p = [('AAPL', 50), ('AAPL', -50), ('RY', 100), ('RY', -43)]
Run Code Online (Sandbox Code Playgroud)
如何计算股票的头寸,以获得当前的持股?
result = [('AAPL', 0), ('RY', 57)]
Run Code Online (Sandbox Code Playgroud) 假设我需要raw_input用wxPython对话框替换下面代码中的函数,该对话框要求用户输入并将值返回给程序:
...
x = raw_input("What's your name?")
print 'Your name was', x
...
Run Code Online (Sandbox Code Playgroud)
我只是在寻找一种简单的方法来做到这一点。谢谢
我在R中创建一个自定义函数,它将一些不同的变量作为输入,并创建一个data.frame,一个图和一些汇总统计数据,所有这些都存储在一个列表中.我只想在调用函数时打印出摘要统计信息,但在显式调用时可以使用plot和data.frame.
我认为我想要的是如何lm()操作,但我不确定它是如何实现的.
当我打印lm我返回的对象时,只得到打印输出$call和$coefficients:
lm(mtcars$mpg ~ mtcars$cyl)
Call:
lm(formula = mtcars$mpg ~ mtcars$cyl)
Coefficients:
(Intercept) mtcars$cyl
37.885 -2.876
Run Code Online (Sandbox Code Playgroud)
但是在幕后显然,函数调用中有更多可用的东西lm.
lm(mtcars$mpg[1:3] ~ mtcars$cyl[1:3])$residuals
1 2 3
-1.280530e-15 1.280530e-15 8.365277e-31
> unclass(lm(mtcars$mpg[1:3] ~ mtcars$cyl[1:3])
Call:
lm(formula = mtcars$mpg[1:3] ~ mtcars$cyl[1:3])
Coefficients:
(Intercept) mtcars$cyl[1:3]
26.4 -0.9
> unclass(lm(mtcars$mpg[1:3] ~ mtcars$cyl[1:3]))
$coefficients
(Intercept) mtcars$cyl[1:3]
26.4 -0.9
$residuals
1 2 3
-1.280530e-15 1.280530e-15 8.365277e-31
$effects
(Intercept) mtcars$cyl[1:3]
-3.741230e+01 1.469694e+00 1.810943e-15
....
$call
lm(formula = mtcars$mpg[1:3] ~ …Run Code Online (Sandbox Code Playgroud) 我有两个位置由 nginx 提供服务。我希望所有/api/*路径都由 uwsgi 服务器提供,并且所有其他/路径由 index.html 提供服务。我正在使用 Vue Router,所以我也需要这个try_files $uri $uri/ /index.html;
这是我的完整配置,适用于 /,但不能正确排除 /api
server {
listen 8080;
location ^~ /api {
include uwsgi_params;
uwsgi_pass localhost:9000;
}
location / {
root /usr/share/nginx/html;
index index.html index.htm;
location ~ ^(?!/api).+ { { # this doesn't work. i'm trying to ignore /api/* for the rule below.
try_files $uri $uri/ /index.html;
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个DF看起来有点像这样的data.frame
category var1 var2
apples 1 4
bananas 3 3
orange 4 1
kiwis 2 3
Run Code Online (Sandbox Code Playgroud)
我还创建了一个简单的自定义函数,它根据两个参数生成输出:
annualize_fte <- function(tenure, amount)
{
if (tenure==0) return(0)
if (tenure>12) {
result = amount
} else {
t_factor = 12 / tenure
result = amount * t_factor
}
return(result)
}
Run Code Online (Sandbox Code Playgroud)
我想创建第三列var3,它是应用于annualize_fte(var1, var2)每一行的结果.
我尝试过以下操作并且失败了:
mutate(DF, var3=annualize_fte(var1, var2))
apply(DF, 1, annualize_fte, DF$var1, DF$var2)
Run Code Online (Sandbox Code Playgroud)
我在未使用的参数或条件长度> 1的错误周围出现错误.
我正在大型数据库中搜索长度在5到7个字符之间的单词列表。到目前为止,我有:
Select *
from sometable
Where upper("Description") like any ("%ABC_123%", "%ABC_124%", "%DE_25%")
Run Code Online (Sandbox Code Playgroud)
我还想返回在查询中找到的单词,但是在不复制subtr函数中的单词列表的情况下,如何执行此操作会陷入困境。
这样做可能有更好的方法,我希望能有一些指导。
我有一个简单的表emp_id和job_code.我想payout基于此返回正确的job_code
我用嵌套的ifelse管理了这个,但是如果我有更多job_code的话呢?
library(dplyr)
set.seed(1)
emp_id <- round(rnorm(100, 500000, 10000))
job_code <- sample(c('a', 'b', 'c'), 100, replace = TRUE)
result <- sample(c(1,2,3,4), 100, replace = TRUE)
df <- data.frame(emp_id = emp_id, job_code = job_code, result = result)
job_a <- c(0, 500, 1000, 5000)
job_b <- c(0, 200, 500, 750)
job_c <- c(0, 250, 750, 1000)
# Works but sucky
df %>% mutate(payout = ifelse(job_code == 'a', job_a[result],
ifelse(job_code == 'b', job_b[result],
job_c[result]))) …Run Code Online (Sandbox Code Playgroud) 我有一个元组列表.我想删除列表中的所有项目,其中在元组中的第二和第三项bananas和1.for循环不起作用,因为它在迭代它时从列表中删除项目.不知道怎么回事?
my_table = [('apples', 'bananas', 1), ('pears', 'bananas', 1), ('grapes', 'apple', 2), ('apples,' 'pears', 2), ('apples', 'bananas', 2), ('grapes', 'bananas', 2)]
>>> printTable(my_table)
('apples', 'bananas', 1)
('pears', 'bananas', 1)
('grapes', 'apple', 2)
('apples,pears', 2)
('apples', 'bananas', 2)
('grapes', 'bananas', 2)
>>> for item, row in enumerate(my_table):
if row[1] == 'bananas' and row[2] == 1:
print item, row
0 ('pears', 'bananas', 1)
5 ('apples', 'bananas', 1)
6 ('grapes', 'bananas', 1)
>>> for item, row in enumerate(my_table):
if …Run Code Online (Sandbox Code Playgroud)